阿亮不减肥 发表于 2022-9-5 01:55:23

课后作业求助

统计从键盘输入的一行英文句子中大写字母的个数。这是哪里错了
#include <stdio.h>

int main () {
        int count = 0;
        int zm = 0;
        printf("请输入一行英文字符:");
        while ( zm = getchar()!= '\n') {
                if (zm <= 'Z' && 'A' <= zm) {
                        count = count + 1;
                }

        }
        printf("你一共输入了%d个大写字母", count);
        return 0;
}

wp231957 发表于 2022-9-5 06:04:29

while((ch = getchar()) !='\n')

临时号 发表于 2022-9-5 12:56:39

看我注释
#include <stdio.h>

int main () {
      int count = 0;
      int zm = 0;
      printf("请输入一行英文字符:");
      while ( (zm = getchar())!= '\n') {// 这里要加(),因为!=的运算符优先程度比=高,所以它会先算getchar()!= '\n',这里要让zm = getchar()先算,所以要加()
                if (zm <= 'Z' && 'A' <= zm) {
                        count = count + 1;
                }

      }
      printf("你一共输入了%d个大写字母", count);
      return 0;
}

阿亮不减肥 发表于 2022-9-5 14:36:57

临时号 发表于 2022-9-5 12:56
看我注释

明白了,如果先比较的话,结果不是0就是1,赋值过去zm就只等于0或1,是这个意思嘛

临时号 发表于 2022-9-5 23:11:06

阿亮不减肥 发表于 2022-9-5 14:36
明白了,如果先比较的话,结果不是0就是1,赋值过去zm就只等于0或1,是这个意思嘛

是的
页: [1]
查看完整版本: 课后作业求助