Closed. This question is off-topic. It is not currently accepting answers. Learn more。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
三年前关闭。
代码
输出:
我尽了一切可能,但没有运气。
注意。
你必须给一个额外的
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
三年前关闭。
代码
#include <stdio.h>
int main()
{
char ch;
do
{
printf("Enter first letter? ");
ch=getchar();
//scanf("%c", &ch);
}
while(ch!='A' || ch!='S' || ch!='M' || ch!='D');
printf("\n terminate here");
return 0;
}
输出:
Runtime error time: 0 memory: 2160 signal:25
Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter? Enter first letter?
我尽了一切可能,但没有运气。
scanf()
也不起作用。密码怎么了? 最佳答案
假设,您将A
作为输入,那么第一个条件不满足,但其他条件满足。对于S
、M
和O
,也是如此。
在我看来,当你收到上述四个字母中的一个时,你似乎在试图停止while循环。它可以以各种方式完成,如ch!='A' && ch!='S' &&ch!='M' && ch!='D'
或!(ch!='A' || ch!='S' ||ch!='M' ||ch!='D')
。
我在代码中使用了第二个,因为它不需要在代码中做任何更改。
#include <stdio.h>
int main()
{
char ch;
do
{
printf("Enter first letter? ");
ch=getchar();
getchar(); // extra getchar
//scanf("%c", &ch);
}
while(!(ch!='A' || ch!='S' ||ch!='M' ||ch!='D'));
printf("\n terminate here");
return 0;
}
注意。
你必须给一个额外的
getchar()
,因为在输入一个字母后,你会给回车键。第二个getchar()
用于执行此新行(\n
)并忽略。如果在变量中指定secondgetchar()
的输入并打印ASCII字符,则会找到相同的值\n
。关于c - 为什么用getchar()接受输入会陷入无限循环? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33980917/