我需要提示用户输入一个字母。如果该字母不是元音字母,请一直提示,直到输入一个元音字母。
我期望的结果是:
输入元音:z
那不是元音。再试一次:h
那不是元音。再试一次:w
这不是元音。请重试:t
那不是元音。再试一次:o
恭喜。你选了个元音。
到目前为止,我的代码是:
do
{
printf("Enter a vowel: ");
scanf(" %c", &letter);
}
while (letter != 'a' && letter != 'e' && letter != 'i' && letter != 'o' && letter != 'u' && letter != 'A' && letter != 'E' && letter != 'I' && letter != 'O' && letter != 'U');
{
printf("That is not a vowel. Try again: ");
scanf(" %c", &letter);
}
printf("Congrats. You picked a vowel!!!");
4条答案
按热度按时间nwwlzxa71#
你的大括号、缩进和空格都是骗人的。看起来
do
没有while
,而while
控制着它下面的块...试试这个:
strchr()
在提供的字符串中搜索匹配字符,如果未找到,则返回NULL(即:在这种情况下不是元音。)"无限循环"只能在用户提供元音时"中断"。
向print语句添加几个LF(
\n
)。hpxqektj2#
Do和While应该一起使用。所以你要找的代码应该类似于下面的代码。你的目标应该是确保用户在循环中直到元音被接收。你也可以通过使用元音检查函数来进一步改进代码。下面是一个例子。
C语言中适用的循环有do-while、for和while,没有do。
axr492tv3#
一旦OP的代码被正确格式化,希望OP能看到这个问题。
循环中没有错误消息。
ymdaylpp4#
一个更简洁的方法是使用
strchr()
,正如@tadman在评论中建议的那样。