这个C程序竟也出错???

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:00:59
#include<stdio.h>
main()
{
char c;
printf("input a char: y or n\n");
do
{
c=getchar();
getchar();
if(c!='y'||c!='n')
printf("put error\n");
}
while(c!='y'||c!='n');
}
不管输对输错,都会显示put error,还陷入死循环,不停地输,哪错了????

当你输入y的时候满足c!='n';
当你输入n的时候满足c!='y';
当你输入的既不是y也不是n的时候,很显然更满足if里的条件……
你的本意是当输入的既不是y,也不是n,就继续输入。
那么需要把if和while里的c!='y'||c!='n'改成c!='y'&&c!='n'就可以了……
体会体会?

你在这个没有循环结束条件啊!当然会死循环。
#include<stdio.h>
main()
{
char c;
printf("input a char: y or n\n");
do
{
c=getchar();
getchar();
if(c=='y'|| c=='n')
printf("put right.\n");
else
printf("put error.\n");
if(c=='\n') break;
}
while(c);
}
这个可以正确运行。