|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是:输入一个字符串,内有数字和非数字字符,例如:A123x56 17960?320/45
将其中连续的数字作为一个整数,依次放到一组数组a中,例如,123放在a[0],56放到a[1]……统计共有多少个整数,并输出这些数字
- #include <stdio.h>
- int main()
- {
- char str[50];
- char *p;
- int i,flag,a[10],*pa,digit,n;
- p=str;
- pa=a;
- printf("Input string:");
- gets(str);
- n=0; //查找到的整数数
- i=0; //移动指针的位置
- digit=0; //查找到的整数
- flag=0; //代表不是数字的标志
- while (*(p+i)!='\0')
- {
- if(*(p+i)<='9'&&*(p+i)>='0')
- {
- flag=1; //标志当前是数字
- digit = digit*10+(*(p+i))-48;
- }
- else //当当前不是数字的时候
- {
- if(flag==1) //如果前一字符是数字
- {
- *pa=digit; //保存前面生成的数字
- digit = 0;
- n++;
- pa++;
- }
- flag=0;
-
- }
- i++;
- }
- pa=a;
- i=0;
- printf("There are %d nums in the words,they are:\n",n);
- for(i=0;i<n;i++) //输出统计好的整数们
- {
- printf("%d",*(pa+i));
- }
- printf("\n");
- return 0;
- }
复制代码
这是我的代码,但是不知道为什么只能统计第一个整数,后面都统计不到,麻烦大家帮我看一下为什么~
- #include <stdio.h>
- int main()
- {
- char str[50];
- char *p;
- int i,flag,a[10],*pa,digit,n;
- p=str;
- pa=a;
- printf("Input string:");
- gets(str);
- n=0; //查找到的整数数
- i=0; //移动指针的位置
- digit=0; //查找到的整数
- flag=0; //代表不是数字的标志
- while (1)
- {
- if(*(p+i)<='9'&&*(p+i)>='0')
- {
- flag=1; //标志当前是数字
- digit = digit*10+(*(p+i))-48;
- }
- else //当当前不是数字的时候
- {
- if(flag==1) //如果前一字符是数字
- {
- *pa=digit; //保存前面生成的数字
- digit = 0;
- n++;
- pa++;
- }
- flag=0;
-
- }
- if(*(p+i)=='\0')
- break;
- i++;
- }
- pa=a;
- i=0;
- printf("There are %d nums in the words,they are:\n",n);
- for(i=0;i<n;i++) //输出统计好的整数们
- {
- printf("%d",*(pa+i));
- }
- printf("\n");
- return 0;
- }
复制代码
|
|