shriek 发表于 2021-7-11 17:57:46

S1E15课后习题求助(我找不出和答案的不同之处但是我的运行后会死机)

我的代码运行后输入字符敲回车后会死机
这是我的代码。答案的在下面
#include<stdio.h>
int main()
{
        char ch;
        int a,e,i,o,u;
        ch=getchar();
        while(ch!='\n')
        {
                a=0;e=0;i=0;o=0;u=0;
                switch(ch)
                {
                        case 'a':
                        case 'A':a++;break;
                        case 'e':
                  case 'E':e++;break;
                  case 'i':
                  case 'I':i++;break;
                  case 'o':
                  case 'O':o++;break;
                  case 'u':
                  case 'U':u++;break;
                }
        }
        printf("a %d\ne %d\ni %d\no %d\nu %d\n",a,e,i,o,u);
        return 0;
}

这是答案
#include <stdio.h>

int main()
{
      char ch;
      int a, e, i, o, u;

      a = 0;
      e = 0;
      i = 0;
      o = 0;
      u = 0;

      while ((ch = getchar()) != '\n')
      {
                switch (ch)
                {
                        case 'a':
                        case 'A': a++;
                                  break;
                        case 'e':
                        case 'E': e++;
                                  break;
                        case 'i':
                        case 'I': i++;
                                  break;
                        case 'o':
                        case 'O': o++;
                                  break;
                        case 'u':
                        case 'U': u++;
                                  break;
                }
      }

      printf("您输入的句子中,包含元音字母%d个!\n", a + e + i + o + u);
      printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)\n", a, e, i, o, u);

      return 0;
}

wp231957 发表于 2021-7-11 17:57:47

狠简单,你的ch仅仅赋值一次,所以下面的虚拟基本上就是死循环了

而下面的代码的ch却是循环赋值

shriek 发表于 2021-7-11 18:08:43

wp231957 发表于 2021-7-11 17:57
狠简单,你的ch仅仅赋值一次,所以下面的虚拟基本上就是死循环了

而下面的代码的ch却是循环赋值

哦哦while里面的赋值也参与了下面的循环谢谢哈
页: [1]
查看完整版本: S1E15课后习题求助(我找不出和答案的不同之处但是我的运行后会死机)