我一直在编写一个简单的程序来检查输入字母是否是元音,并且我的代码不起作用。
程序应将字符一一输入,直到输入%,这将使其退出。它检查输入的字符是否为元音,并打印结果。如果输入不是字母,它也会报告错误。
问题是,它在第二步跳出了循环。
预先感谢您的帮助。
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;
}