原题链接:[编程入门]字符串分类统计
解题思路和注意事项:
在这里我们会用到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> //ÊäÈëÒ»ÐÐ×Ö·û£¬·Ö±ðͳ¼Æ³öÆäÖÐÓ¢ÎÄ×Öĸ¡¢Êý×Ö¡¢¿Õ¸ñºÍÆäËû×Ö·ûµÄ¸öÊý¡£ void main() { int a,c=0,num=0,space=0,y=0; while((a = getchar()) != ' ') { if(a>='A'&&a<='Z'||a>='a'&&a<='z') { ++c; } else if(a>='0'&&a<='9') { ++num; } else if(a==' ') { ++space; } else { ++y; } } printf("%d %d %d %d ",c,num,space,y); return 0; }#include <stdio.h> //输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。 void main() { int a,c,num,space,y; a = c = num = space = y = 0; while((a = getchar()) != '\n') { if(a>='A'&&a>='Z'||a>='a'&&a>='z') { ++c; } else if(a>='0'&&a<='9') { ++num; } else if(a==' ') { ++space; } else { ++y; } } printf("%d %d %d %d\n",c,num,space,y); } 提交说我答案错误50%。。。。。。可我编译器没啥错误啊。。。求解#include<stdio.h> void main() { int a,count1=0,count2=0,count3=0,count4=0; a=getchar(); while(a!='\n') { if(a==' ') count1++; else if(a>=65&&a<=90||a>=97&&a<=122) count2++; else if(a>=48&&a<=57) count3++; else count4++; } printf("%d,%d,%d,%d",count2,count3,count1,count4); } 这个为什么输入为数据后,回车没用#include <stdio.h> #include <string.h> int main(void){ char str[500]; gets(str); int i; int cnt_ch = 0, cnt_num = 0, cnt_spa = 0, cnt_sym = 0; for(i=0; i<strlen(str); i++){ if((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str<='z')){ cnt_ch++; } else if(str[i]>='0' && str[i]<='9'){ cnt_num++; } else if(str[i]==' '){ cnt_spa++; } else{ cnt_sym++; } } printf("%d %d %d %d\n", cnt_ch, cnt_num, cnt_spa, cnt_sym); return 0; } 请问用字符串做为什么不对?