原题链接:[编程入门]字符串分类统计
解题思路和注意事项:
在这里我们会用到getchar()函数,简单来说,getchar()就是从键盘获取字符,直到回车为止;
代码中while里的表达式(c = getchar()) != '\n',意思是,当输入的字符不是换行符的时候,继续往下执行;
注意这里的括号不能丢,因为!=的优先级比=高,如果去掉了外面的括号就等价于 c = (getchar()!='\n');
参考代码:
#include<stdio.h>
int main()
{
int letter = 0,number = 0,blank = 0,others = 0,c; //分别为字母、数字、空格、其他
while((c = getchar()) != '\n'){
if(c >= 'A' && c<='Z' || c >= 'a' && c <= 'z') //判断是否为字母
letter++;
else if(c >= '0' && c <= '9') //判断是都为数字
number++;
else if(c == ' ') //判断是否为空格
blank++;
else //其他
others++;
}
printf("%d %d %d %d\n",letter,number,blank,others);
return 0;
}0.0分
137 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int main() { char c; int letters=0,space=0,digit=0,others=0; while(c!='\n') { if(c==' ') space++; else if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) letters++; else if('0'<=c&&c<='9') digit++; else others++; } printf("letters=%d space=%d digit=%d others=%d\n",letters,space,digit,others); return 0; } 显示运行时间超限,请问是什么意思?#include<stdio.h> int main() { int i,a=0,b=0,c=0,d=0; while((i=getchar())!='\n') //!='\n' { if((i>='a'&&a<='z')||(i>='A'&&i<='Z')) a=a+1; else if(i>='0'&&i<='9') b=b+1; else if(i==' ') c=c+1; else d=d+1; } printf("%d %d %d %d",a,b,c,d); return 0; } 怎么说格式错误呢???大佬指导下#include<stdio.h> int main() { int b=0,c=0,d=0,e=0; char a; while ((a=getchar())!='\n') { if(a>='a'&&a<='z'||a>='A'&&a<='Z') { b++; }else if(a==' ') { c++; }else if(a>='0'&&a<'9') { d++; }else { e++; } } printf("%d,%d,%d,%d\n",b,c,d,e); return 0; } 不知道自己的哪里错了!!#include<stdio.h> int main() { char x1; int letter=0, number=0,space=0,left=0; x1=getchar(); while (x1!='\n') { if (x1>='a'&& x1<='z' || x1>='A'&& x1<='Z' ) { letter++; } else if(x1>='0'&& x1<='9') {number++;} else if (x1==' ') { space++; } else { left++;} } printf("%d %d %d %d",letter,number,space,left); return 0; } 我这样写为什么没有输出呢? 先get 字符串 再比较问题出在哪里