白书字符串数组

数字与字符串转换

  • 使用itoa函数,注意要指定转换的进制..
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{   
    int number=12345;
    char string[7]={0};
    itoa(number,string,10);
    printf("integer=%d\n",number);
    printf("string=");
    for(int i=0;i<6;i++)
        printf("%c",string[i]);
    printf("\n");
    return 0;
}
  • 用sprintf,sscanf来写入写出..
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{   
    int number=12345;
    int temp;
    char string[7]={0};
    sprintf(string,"%d",number);
    printf("string=");
    for(int i=0;i<6;i++)
        printf("%c",string[i]);
    printf("\n");

    sscanf(string,"%d",&temp);
    printf("integer= %d\n",temp);
    return 0;
}

1.蛇形填数

注意边界条件的判断

#include<stdio.h>
int a[100][100]={0};
int main()
{
     int n,tot,x,y;
     scanf("%d",&n);
     x=0;y=n-1;
     tot=a[x][y]=1;
     while(tot<n*n)
     {
         while(x+1<n && !a[x+1][y]) a[++x][y]=++tot;
         while(y-1>=0 && !a[x][y-1]) a[x][--y]=++tot;
         while(x-1>=0 && !a[x-1][y]) a[--x][y]=++tot;
         while(y+1<n && !a[x][y+1]) a[x][++y]=++tot;
     }
     for(x=0;x<n;x++)
     {
         for(y=0;y<n;y++)
             printf("%3d",a[x][y]);
         printf("\n");
     }
        return 0;
}

2.竖式乘法

查找数字是否出现过,可以用字符串操作strchr查找字符串中是否出现过字符c,即把数字转换成字符去与输入的字符串对比..

#include<stdio.h>
#include<string.h>
int main()
{
     int abc,de,x,y,z,ok,i,count=0;
     char s[100],buf[100]="";
     scanf("%s",s);
     for(abc=100;abc<=999;abc++)
         for(de=10;de<=99;de++)
         {
             x = abc*(de%10); y = abc*(de/10); z = abc*de;
             sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
                                            //把十进制的数字以char输出到字符数组中
             ok=1;
             for(i=0;i<strlen(buf);i++)
                 if(strchr(s,buf[i])==NULL) ok=0;//s中首次出现字符buf[i]的位置
             if(ok)
             {
    printf("<%d>\n",++count);
    printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n",abc,de,x,y,z);
             }
         }
        printf("The number of solutions = %d\n",count);
        return 0;
}

3.最长的回文子串

遍历寻找子串,从左起开始循环检测

#include<stdio.h>
#include<string.h>
#include<ctype.h>
char buf[5000],s[5000];
int main()
{
    fgets(buf,sizeof(buf),stdin);
    int n,m=0,ok=1,max=0;
    int i,j,k;
    n=strlen(buf);
    for(i=0;i<n;i++)
        if(isalpha(buf[i])) s[m++]=toupper(buf[i]);
    for(i=0;i<m;i++)
        for(j=i;j<m;j++)
        {
            ok=1;
            for(k=i;k<=j;k++)
                if(s[k]!=s[j-(k-i)]) 
                    ok=0;
            if(ok && j-i+1>max) max=j-i+1;
        }
     printf("max = %d\n",max);
     return 0;
}

从中间向两边扩展,从中间开始枚举,奇数偶数有区别注意区分,总的复杂度是o(m^2),比遍历要小,另外要原样输出必须存下字符的位置..
这里输入用的是fgets也可以用gets..

#include<stdio.h>
#include<string.h>
#include<ctype.h>
char buf[5000],s[5000];
int main()
{
    fgets(buf,sizeof(buf),stdin);
    int n,m=0,ok=1,max=0;
    int i,j,k,x,y,p[100]={0};
    n=strlen(buf);
    for(i=0;i<n;i++)
        if(isalpha(buf[i])) {p[m]=i;s[m++]=toupper(buf[i]);}
    for(i=0;i<m;i++)
    {
        for(j=0;i-j>=0 && i+j<m;j++)
        {
            if(s[i-j]!=s[i+j]) break;
            if(j*2+1>max) {max=2*j+1;x=p[i-j];y=p[i+j];}
        }
        for(j=0;i-j>=0 && i+j+1<m;j++)
        {
            if(s[i-j]!=s[i+j+1]) break;
            if(j*2+2>max) {max=2*j+2;x=p[i-j];y=p[i+j+1];}
        }
    }
    for(i=x;i<=y;i++)
        printf("%c",buf[i]);
    printf("\n");
     return 0;
}

4.统计单词的长度

输入一个gets的字符串,提取其中的字符

#include<stdio.h>
#include<string.h>
#include<ctype.h>
const int MAX=189819;

int main()
{
     int count=1,sumLength=0;
     char word[MAX];
     gets(word);
     int preIndex=0;
     for(int i=0;i<strlen(word);i++)
     {
         if(word[i]==' ') 
         {
             if(preIndex==0)
                 sumLength+= i;
             count++;
             sumLength += i-preIndex;
             preIndex=i+1;
         }
     }

     if(count ==0)
         printf("No Input");
     else
         printf("%lf\n",(double)sumLength/count);

     return 0;
}

5.计算器

从输入的一行字符串中提取数字,根据操作符来分隔左操作数和右操作数..先要转存到字符数组中,再换算成数字..

#include<stdio.h>
#include<string.h>
#include<ctype.h>
const int MAX=189819;

int main()
{
     int x,y,i,power;
     char str[MAX];
     char strX[4]={0},strY[4]={0};
     char opr;
     gets(str);
     
     int p=0;
     for(i=0;str[i]!='+' && str[i]!='-' && str[i]!='*' && str[i]!='/';i++)
         if(str[i]>='0' && str[i]<='9')
             strX[p++]=str[i];
     strX[p]='\0';
     //printf("%s",strX);

     opr=str[i];
     //printf("%c",opr);
     p=0;
     while(i<strlen(str))
     {
         if(str[i]>='0' && str[i]<='9')
             strY[p++]=str[i];
         i++;
     }
     strY[p]='\0';
     //printf("%s",strY);
     x=0;power=1;
     for(i=strlen(strX)-1;i>=0;i--)
     {
         x += (strX[i]-'0')*power;
         power *= 10;
     }

     y=0;power=1;
     for(i=strlen(strY)-1;i>=0;i--)
     {
         x += (strY[i]-'0')*power;
         power *= 10;
     }

     if(opr == '+') printf("%d\n",x+y);
     if(opr == '-') printf("%d\n",x-y);
     if(opr == '*') printf("%d\n",x*y);

     return 0;
}

6.进制转换

十进制转换成其他进制,就一直求余就行了,如果忘了,推一次二进制除法就可以写出来..

#include<stdio.h>
#include<string.h>
#include<ctype.h>
const int MAX=189819;

int main()
{    
  int n,b;
  int ans[MAX]={0};
  scanf("%d%d",&n,&b);
  int i=0;
  while(n)
  {
      ans[i++]=n%b;
      n = n/b;
  }
  for(i=i-1;i>=0;i--)
      printf("%d",ans[i]);
  printf("\n");

  return 0;
}

7.字符串转换

输入的字符串错位,可以用单个输入getchar来做。首先要输入的c在常量字符串当中的位置,其次要考虑空格的输出。

#include <stdio.h>
#include <math.h>
char *s="`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";

int main()
{
    int i,c;
    while((c=getchar())!=EOF)
    {
        for(i=1;s[i]&&s[i]!=c;i++);
        if(s[i]) putchar(s[i-1]);
        else putchar(c);
    }
    return 0;
}

8.周期串的检验

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
    char word[100];
    scanf("%s",word);
    int len = strlen(word);
    for(int i=1;i<=len;i++)
        if(len%i==0)
        { 
            int ok=1;
            for(int j=i;j<=len;j++)
                if(word[j]!=word[j%i]) {ok=0;break;}
            if(ok) {printf("%d\n",i);break;}
          
        }
    return 0;
}

华为的一道题

#include <stdio.h>
#include <stdlib.h>
int a[10];

void swap(int &a,int &b)
{
    if(a!=b)
    {
        a ^=b;
        b ^=a;
        a ^=b;
    }

}

void insert_sort(int a[],int n)
{
    for(int i=1;i<n;i++)
        for(int j=i-1;j>=0 && a[j]>a[j+1];j--)
            swap(a[j],a[j+1]);
}

int remove_duplicate(int a[],int n)
{
    int index=0;
    for(int i=1;i<n;i++)
        if(a[index]!=a[i])
            a[++index]=a[i];
    return index+1;
}



int main()
{
    int i,n;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    insert_sort(a,10);

    //for(i=0;i<10;i++)
        //printf("%d ",a[i]);
    n=remove_duplicate(a,10);

   // for(i=0;i<n;i++)
     // printf("%d ",a[i]);
    for(i=n-1;i>=n-5;i--)
        printf("%d",a[i]);

    printf("\n"); 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,211评论 0 4
  • 今天去看了几套小房子,都是一室一厅的,有装修过就没有住过人的,也有住过人的,但现在一直空置的,朝北朝东各一套,相对...
    牌牌阅读 281评论 0 0
  • 我是谁 我是贝壳叔叔,80后无房无车无存款无工作, 大学肄业 ,来自广西现居杭州。 我要做什么? 今天是2017年...
    贝壳叔叔0阅读 284评论 0 1
  • 1.本周为了练好口才,我的行动和成果有哪些? 1)本周学习群里小伙伴“前端”的方法,也试着不写稿子录制了《喝鸡汤吃...
    董姝阅读 204评论 0 0