shark1996 发表于 2020-1-30 16:35:42

C语言课后题求句子里的大写字母数

#include <stdio.h>

int main()
{
      int ch;

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

      while ((ch = getchar()) != '\n')
      {
                if (ch >= 'A' && ch <= 'Z')
                {
                        ch = ch - 'A' + 'a';
                }
                else if (ch >= 'a' && ch <= 'z')
                {
                        ch = ch - 'a' + 'A';
                }

                putchar(ch);
      }

      putchar('\n');

      return 0;
}

为什么while 里getchar放在外面,程序运行就一直卡主,如下:
ch = getchar();

    while (ch!= '\n')

还有为什么用的是int而不是char?

求大神解答{:10_254:}

最后的魁拔 发表于 2020-1-30 16:41:30

ch = getchar();

    while (ch!= '\n')
先执行ch = getchar()
输入字符
再执行循环判断是否是换行
只要输入的字符不是换行就是死循环了

zltzlt 发表于 2020-1-30 16:43:21

1. 如果放在测试条件中,每次执行循环体都要先执行 ch = getchar()。而如果将 ch = getchar() 放在循环外面,只执行一次 getchar(),如果用户不是先输入回车,ch 则永远不会为 '\n',会形成死循环。

2. 用 char 也可以。
页: [1]
查看完整版本: C语言课后题求句子里的大写字母数