|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main() {
- int count = 0;
- char ch;
- printf("请输入一个英文句子:");
- ch = getchar();
- while (ch >= 'A' && ch <= 'Z' ) {
- count++;
- }
- printf("共有%d个大写字母", count);
- return 0;
- }
复制代码
不管我怎么输入都是输出0个 ,不知道怎么回事
下面是我的另一个想法:使用数组储存字符串然后遍历,但是大小写交错或者出现空格就错误了
- #include <stdio.h>
- int main() {
- int count = 0;
- char ch[256];
- int i = 0;
- printf("请输入一个英文句子:");
- scanf("%s", ch);
- while (ch[i] >= 'A' && ch[i] <= 'Z' ) {
- count++;
- i++;
- }
- printf("共有%d个大写字母", count);
- return 0;
- }
复制代码
本帖最后由 肖-肖 于 2021-5-26 18:33 编辑
直接说你改进的程序说起吧,先说下你的改进
1.改成了%s -->说明你认识到getchar()只能接收一个字符!
2.改成了数组-->说明你认识到要用数组来放字符串!
鹅 很棒,思路是对的,  就是一些小问题需要知道下就好了!
最大的问题是while循环ch[i] >= 'A' && ch[i] <= 'Z' 中的循环体--》i++放在了里边
这样写的话会导致当遇到小写字母的时候无法i++从而导致后边的字符无法正确(因为一致停留再那个小写字符上了嘛~)判断 对吧
还有个小问题是:scanf这个接收的话只能接收不带有空格的字符串,知道就OK了
所以我进行了改进
代码如下:
- #include <stdio.h>
- int main() {
- int count = 0;
- char ch[256];
- int i = 0;
- printf("请输入一个英文句子:");
- //scanf("%s", ch);
- while ((ch[i]=getchar())!='\n') {
- //判断
- if(ch[i] >= 'A' && ch[i] <= 'Z' )
- {
- count++;
-
- }
- i++;
- }
- printf("共有%d个大写字母", count);
- return 0;
- }
复制代码
运行结果如下:
|
|