菠菜小陈 发表于 2021-9-5 10:12:26

c语言第13课计算英文句子中大写字母个数问题

本帖最后由 菠菜小陈 于 2021-9-5 10:39 编辑

问题:为什么按照代码1的形式只能进行一次循环?只能计算出输入的第一个字符是不是大写字母?(代码1是自己写的,代码2是答案
#include <stdio.h>

int main()
{
        int ch, i=0;
       
        printf("请输入一串英文句子;\n");
       
        while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
        {
                i = i + 1;
        }
       
        printf("您总共输入了%d个大写字母\n",i);
        return 0;
}


#include <stdio.h>

int main()
{
      int ch, count = 0;

      printf("请输入一行英文句子:");

      while ((ch = getchar()) != '\n')
      {
                if (ch >= 'A' && ch <= 'Z')
                {
                        count = count + 1;
                }
      }

      printf("你总共输入了%d个大写字母!\n", count);

      return 0;
}

菠菜小陈 发表于 2021-9-5 10:14:01

我的代码
#include <stdio.h>

int main()
{
        int ch, i=0;
       
        printf("请输入一串英文句子;\n");
       
        while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
        {
                i = i + 1;
        }
       
        printf("您总共输入了%d个大写字母\n",i);
        return 0;
}

jackz007 发表于 2021-9-5 10:27:06

本帖最后由 jackz007 于 2021-9-5 10:29 编辑

      看看你的循环条件
       while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
      循环需要同时满足两个条件,当前字符 ch 不是回车,同时,ch 是大写字母,那么,很显然,当 ch 不是 '\n',也不是大写字母的时候,就会导致循环结束,后续的大写字母自然也就不能被统计到了。
      所以,解决问题的关键是,不可以把 ch >= 'A' && ch <= 'Z' 作为循环的必备条件。

菠菜小陈 发表于 2021-9-5 10:38:44

jackz007 发表于 2021-9-5 10:27
看看你的循环条件

      循环需要同时满足两个条件,当前字符 ch 不是回车,同时,ch 是大写 ...

知道了,感谢&#128591;
页: [1]
查看完整版本: c语言第13课计算英文句子中大写字母个数问题