我一直在编写一个简单的程序来检查输入字母是否是元音,并且我的代码不起作用。
程序应将字符一一输入,直到输入%,这将使其退出。它检查输入的字符是否为元音,并打印结果。如果输入不是字母,它也会报告错误。
问题是,它在第​​二步跳出了循环。
预先感谢您的帮助。
PS对不起,没有写到没有错误消息,它只是打破了循环。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
  char processed='q';
  while(processed != '%')
  {
    printf("Enter letter to check if it's a vowel, %% to quit.\n");
    char input = getchar();
    processed = tolower(input);
    printf("%c\n", processed);
    if (processed == '%')
      break;
    if (processed < 'a' || processed > 'z')
    {
      fprintf(stderr, "Input should be a letter\n");
      exit(1);
    }
    switch(processed)
    {
      case 'a':
      case 'e':
      case 'i':
      case 'o':
      case 'u':
      case 'y':
        printf ("Vowel\n");
        break;
      default:
        printf ("Non-vowel\n");
    }
  }
  exit(0);
}

最佳答案

大概您要输入一个字符,然后按[ENTER]。因此,实际上您要输入两个字符-您键入的字母和换行符(\n)。第二次通过循环获取换行符,发现它不是字母,因此您遇到了错误情况。也许您想添加如下内容:

if (processed == '\n') {
    continue;
}

10-06 10:23