赞
踩
注:zzulioj前187题的答案上传到了github和gitee:github gitee
题目描述
小明的老师给小明出了一道题目:数数一篇文章出现了多少个数字,请你帮帮他吧。
输入
输入一个字符串,由空格、英文字母、数字组成,以回车结束,长度小于1000。
输出
输出整数个数(不是数字字符个数哦)。
样例输入 Copy
365grh 27ha578
样例输出 Copy
3
提示
注意:010是两个数字,0和10
正确解法:
- #include<stdio.h>
- #include<ctype.h>
- #include<string.h>
- int main()
- {
- char c[1000];
- gets(c);
- int sum=0;
- for(int i=0;i<(int)strlen(c);i++)
- {
- if(isalpha(c[i]!=0)||c[i]==' ')//如果是字母或空格,重新来(例如fsi fjs)
- continue;
- if(c[i]=='0')//如果是字母0则为一次计数(例如010)
- {
- sum++;
- continue;
- }
- if(c[i]>48&&c[i]<58)//如果是除0以外的数字则
- {
- sum++;//不管后面是什么,都一定是一次计数
- for(i++;i<(int)strlen(c);i++)
- {
- if(isalpha(c[i])!=0||c[i]==' ')//直到碰到字母或空格,本轮计数完毕
- break;
- }
- }
- }
- printf("%d",sum);
- return 0;
- }
另外,我还有一种写法,跟上面的差不多(两种写法的判断末尾整数的方式不同),但结果是错的,我不知道哪里有问题,请教各位大佬
- #include<stdio.h>
- #include<ctype.h>
- #include<string.h>
- int main()
- {
- char c[1000];
- gets(c);
- int sum=0;
- for(int i=0;i<(int)strlen(c);i++)
- {
- if(isalpha(c[i]!=0)||c[i]==' ')
- continue;
- if(c[i]=='0')
- {
- sum++;
- continue;
- }
- if(c[i]>48&&c[i]<58)
- {
- for(i++;i<(int)strlen(c);i++)
- {
- if(isalpha(c[i])!=0||c[i]==' ')
- {
- sum++;
- break;
- }
- }
- }
- }
- if(c[strlen(c)-1]>48&&c[strlen(c)-1]<58)//如果末尾是除0以外的数字
- sum++;
- printf("%d",sum);
- return 0;
- }
这是oj给的错误提示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。