| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 371 人关注过本帖
标题:谁能帮我解释以下这个程序 谢谢了
只看楼主 加入收藏
w3236495
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-8-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
谁能帮我解释以下这个程序 谢谢了
  1 #include <stdio.h>
  2 int c(char* a,char* b)
  3 {
  4    char* x,*y;
  5    int i=0,j=0,k=0;
  6    while((*a) != '\0'){
  7       if(*a>47 && *a<58){
  8          i=0;
  9          for(x=a;*a>47 && *a<58;a++)i++;
 10    }
 11       else a++;
 12       if(j<=i){
 13       j=i;y=x;
 14
 15    }
 16    }
 17    for(k=0;k<j;k++)
 18    {*b=*y;b++;y++;}
 19    *b='\0'; return j;
 20 }
 21 main()
 22 {
 23    char a[100]="ertyui1234534567sd3456734567";
 24    char b[100];
 25    int x=c(a,b);
 26    printf("字符的个数是%d\n字符串是%s\n
搜索更多相关主题的帖子: include return 
2012-08-23 23:09
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:7 
#include <stdio.h>
int c(char* a,char* b)
{
    char* x,*y;
    int i=0,j=0,k=0;
    while((*a) != '\0'){
        if(*a>47 && *a<58){
            //遍历a 如果是数字 记下位置 继续遍历 数数字个数
            i=0;
            for(x=a;*a>47 && *a<58;a++)i++;
        }
        else a++;
        if(j<=i){
            //j y 分别记录了数字个数和位置 这里是找最长的数字
            j=i;y=x;

        }
    }
    //这个for是最长的数字复制到b里
    for(k=0;k<j;k++)
    {*b=*y;b++;y++;}
    *b='\0'; return j;
}
main()
{
    char a[100]="ertyui1234534567sd3456734567";
    char b[100];
    int x=c(a,b);
    printf("字符的个数是%d\n字符串是%s\n");
}

代码写的好像天书一样 不知道理解的对不对
2012-08-23 23:39
justNPC
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:311
注 册:2012-8-11
收藏
得分:7 
#include <stdio.h>
   2 int c(char* a,char* b)
   3 {
   4    char* x,*y;
   5    int i=0,j=0,k=0;
   6    while((*a) != '\0'){            //这个用来判断数字的个数  数字的ASCⅡ码是 48->0  ......    57->9,如果字符串里面有数字 i+1
   7       if(*a>47 && *a<58){
   8          i=0;
   9          for(x=a;*a>47 && *a<58;a++)i++;  //让a指向哪些数字
 10    }
 11       else a++;       //非数字a指向下一个
 12       if(j<=i){
 13       j=i;y=x; //用j来记录连续数字的长度,让y指向连续数字的第一个位置
 14
 15    }
 16    }
 17    for(k=0;k<j;k++)
 18    {*b=*y;b++;y++;}     //把字符串y中的值 给付给字符串a
 19    *b='\0'; return j;   //在y的最后一个数字之后插入一'\0',保证printf能输出b这段字符串
 20 }
 21 main()
 22 {
 23    char a[100]="ertyui1234534567sd3456734567";
 24    char b[100];
 25    int x=c(a,b);
 26    printf("字符的个数是%d\n字符串是%s\n


你代码不完整啊   26行是怎样?
估计应该是要求输出字符串中一串最长的数字
printfprintf("字符的个数是%d\n字符串是%s\n",x,b);
2012-08-23 23:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用justNPC在2012-8-23 23:48:37的发言:



你代码不完整啊   26行是怎样?
估计应该是要求输出字符串中一串最长的数字
printfprintf("字符的个数是%d\n字符串是%s\n",x,b);

它给的就不完整 我顺手写了不让编辑器提示语法错误而已 呵呵
2012-08-23 23:56
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2012-8-23 23:39:56的发言:

#include <stdio.h>
int c(char* a,char* b)
{
    char* x,*y;
    int i=0,j=0,k=0;
    while((*a) != '\0'){
        if(*a>47 && *a<58){
            //遍历a 如果是数字 记下位置 继续遍历 数数字个数
            i=0;
            for(x=a;*a>47 && *a<58;a++)i++;
        }
        else a++;
        if(j<=i){
            //j y 分别记录了数字个数和位置 这里是找最长的数字
            j=i;y=x;

        }
    }
    //这个for是最长的数字复制到b里
    for(k=0;k<j;k++)
    {*b=*y;b++;y++;}
    *b='\0'; return j;
}
main()
{
    char a[100]="ertyui1234534567sd3456734567";
    char b[100];
    int x=c(a,b);
    printf("字符的个数是%d\n字符串是%s\n", x, b);
}

代码写的好像天书一样 不知道理解的对不对


printf("字符的个数是%d\n字符串是%s\n", x, b);

貌似是这样 上面是顺手改的没写对
2012-08-23 23:57
w3236495
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-8-23
收藏
得分:0 
谢谢了  最后那个没复制上去
2012-08-24 22:50
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:7 
路过!

做自己喜欢的事!
2012-08-28 21:24
快速回复:谁能帮我解释以下这个程序 谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019799 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved