原题链接:[编程入门]字符串分类统计
解题思路:C标准中有一个一个头文件<ctype.h>,这里面定义了一批C语言字符处理函数,用于测试字符是否属于特定的字符类别,如字母字符、控制字符、数字、等等;
头文件:<ctype.h>
函数:
(1)int isalpha(int ch);
判断ch是否为字母,如果是返回非0,反之返回0;
(2)int isdigit(int ch);
判断ch是否为数字,如果是返回非0,反之返回0;
(3)int islower(int ch);
判断ch是否为小写字母,如果是返回非0,反之返回0;
(4)int isupper(int ch);
判断ch是否为大写字母,如果是返回非0,反之返回0;
……
等等很多处理字符的函数,大家有兴趣可以去看看博客。
注意事项:
参考代码:
#include <stdio.h> #include <ctype.h> int main() { int letter = 0,number = 0,blank = 0,others = 0,c; //分别为字母、数字、空格、其他 while((c = getchar()) != '\n'){ if(isalpha(c)) //判断是否为字母 letter++; else if(isdigit(c)) //判断是都为数字 number++; else if(c == ' ') //判断是否为空格 blank++; else //其他 others++; } printf("%d %d %d %d\n",letter,number,blank,others); return 0; }
0.0分
87 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
@日夜无祥 空格的条件判断里少了个“=”,导致出错
@暗中讨饭 每次只判断了一个字符 使用while循环才把整个字符串判断完
@名字好难想 回车符也算进去了
@日夜无祥 数字里还有零呢
@一只小菜鸡 @uq_38164234194 不加的话,只执行一次,因为getchar()一次只读一个值,加上了,会继续读输入到缓存中的下一个值
@名字好难想 那啥刚刚又看了下,把i<=n改为i<n就行了,手快写错了
@uq_49487142223 或者用gets
@Hit哈工 将scanf(“%s”,&c)改成scanf("%%[^ ]",&c)即可。因为scanf(“%s”,&c)没有办法输出带空格的字符串的
@uq_49487142223 因为scanf碰见空格结束输入,所以你应该用正则表达式,scanf(“%[^ ]”,str),让你的输入在碰见回车才结束
@我要吃肉肉 scanf函数不能存储空格,用gets