原题链接:[编程入门]字符串分类统计
解题思路和注意事项:
在这里我们会用到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> #include<string.h> void main() {char a[200]; int i=0,x=0,y=0,z=0,s=0; gets(a); while(a[i]!='\0') { if('A'<=a[i]&&'z'>=a[i]) {x+=1;i++;} else if('0'<=a[i]&&'9'>=a[i]) {y+=1;i++;} else if(a[i]==' ') {z+=1;i++;} else {s+=1;i++;} } printf("%d %d %d %d\n",x,y,z,s); }@Kanays #include <stdio.h> int main() { char ch[200]; int i,a=0,b=0,c=0,d=0; gets(ch); for(i=0;ch[i]!=' ';i++) { if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')) a++; else if(ch[i]>='0'&&ch[i]<='9') b++; //加else表示分级的if,这几个表示并列 else if(ch[i]==' ') c++; else d++; //加上之后,最后的else语句也表示与上面并列 ,正确 //否则,不加上面的else,每i++一次,他都执行一次,最后d就是输入全部字符的数量了 } printf("%d %d %d %d",a,b,c,d); return 0; }@Kanays #include <stdio.h> int main() { char ch[200]; int i,a=0,b=0,c=0,d=0; gets(ch); for(i=0;ch[i]!=' ';i++) { if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')) a++; else if(ch[i]>='0'&&ch[i]<='9') b++; //加else表示分级的if,这几个表示并列 else if(ch[i]==' ') c++; else d++; //加上之后,最后的else语句也表示与上面并列 ,正确 //否则,不加上面的else,每i++一次,他都执行一次,最后d就是输入全部字符的数量了 } printf("%d %d %d %d",a,b,c,d); return 0; }想问下uu们这个为什么是错的呀 #include <stdio.h> int main() { char ch[200]; int i,a=0,b=0,c=0,d=0; gets(ch); for(i=0;ch[i]!='\0';i++) { if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')) a++; if(ch[i]>='0'&&ch[i]<='9') b++; if(ch[i]==' ') c++; else d++; } printf("%d %d %d %d",a,b,c,d); return 0; }@INT橙 因为你多输入了一个printf()语句,是不用这个的 printf("请输入一字符串 ");请问哪里错了 #include<stdio.h> int main() { char a[10000]; int i=0,j; int space=0,num=0,letter=0,others=0; while(~scanf("%c",&a[i])) i++; for(j=0;j<i;j++) { if(a[j]==32)space++; else if(a[j]>=48&&a[j]<=57) num++; else if(a[j]>=65&&a[j]<=90) letter++; else if(a[j]>=97&&a[j]<=122) letter++; else others++; } printf("%d %d %d %d",letter,num,space,others); return 0; }