原题链接:[编程入门]字符串分类统计
解题思路和注意事项:
在这里我们会用到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() { int a=0,b=0,c=0,d=0,i;//a表示英文字母b表示数字c表示空格d表示其他字符; scanf("%d",&i); while((i= getchar()) !='\n') { if(i>='A' && i<='Z' || i>='a' && i<='z') a++; else if(i>='0' && i<='9') b++; else if(i==' ') c++; else d++; } printf("%d %d %d %d\n",a,b,c,d); return 0; } 运行可以,提交显示错误百分之五十#include<stdio.h> int main() { char a,j=0,k=0,i=0,l=0; //j字母,k数字,i空格,l其他字符 while(a=getchar()) { if(a==10) break; else if(a>=65&&a<=122) j++; else if(a>=48&&a<=57) k++; else if(a==32) i++; else l++; } printf("%d %d %d %d\n",j,k,i,l); return 0; } 答案错误,不知道哪里不对,求告知#include<stdio.h> #include<conio.h> int main() { int num = 0, letter = 0, space = 0, other = 0; char c; c=_getche( ); while (c!='\r') { if ('0' <= c && c <= '9') num++; else if ('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z') letter++; else if (c == ' ') space++; else other++; c = _getche(); } printf("\n%d %d %d %d", letter, num, space, other); return 0; } 自己运行没有问题,提交提示编译错误,有没有大佬指导下,哪里有错误#include<stdio.h> int main() { int c=0, n=0, o=0, b=0, p; while((p=getchar())!='/n') { if(p>='a'&&p<='z'||p>='A'&&p<='Z') c++; else if(p>='0'||p<='9') n++; else if(p==' ') b++; else o++; } printf("%d %d %d %d", c, n, b, o); return 0; } 为什么时间超限啊#include <stdio.h> int main() { /* 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。 */ int c; int nY,nS,nB,n,nQ=0; n=nY=nB=nS=nQ; while((c=getchar())!= '\n'){ n++; if(c>='a'&&c<='z'||c>='A'&&c<='Z') nY++; if(c>='0'&&c<='9') nS++; if(c==' ') nB++; nQ=n-nY-nS-nB; }; printf("%d %d %d %d",nY,nS,nB,nQ); return 0; }