c语言这样写输入Y或N后,为什么它还是重复循环啊?求大神指教!

while((c!='y')||(c!='Y')||(c!='n')||(c!='N'))
{
printf("continue or not(Y/N)?");
scanf(" %c",&c);
if(c=='n'||c=='N')
flag=0;
}

!((c='y')||(c='Y')||(c='n')||(c='N'))

判断条件你写错了追问

(c!='y')||(c!='Y')||(c!='n')||(c!='N')

!=不是不等于么,这样写没错啊,当c不等于'y'且c不等于'Y'且c不等于'n'且c不等于'N',执行循环,不明白

追答

举个例子 当你输入 c=y 的时候
(c!='y')||(c!='Y')||(c!='n')||(c!='N')

=0||1||1||1
=1
条件成立,执行循环

||是或的意思

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言,数组输入遇到问题求大神指教:哪里错了,如何改正,为什么会出现...
scanf的格式加'\\n',含义特殊,不是输入一个回车,而是输入完一个数字后,必须等待一个非空格、制表符、回车的输入,程序才会继续。所以你那样写,第一次循环输入2回车,不会进入下一次循环,而是等待再次输入,然后你输入3的时候2被存储在元素1中,进入下一个循环,已经有3了还要等待输入,于是你输入...

c语言程序无限循环,不知道怎么改,求高人指教:
你的main函数就无限循环了,break是跳出当前循环,再者init()也循环了只有都等于-1退出

C语言关于信息输入重复的问题
输入的值,所以第一次a和b相等,因为都等于 stu[0].num,所以执行while循环了。<3>你的for双重循环什么意思?既然前面都已经将信息统计到stu数组中去了,为什么还要再读取一遍文件,为什么不拿stu直接使用,等所有输入结束了,再写入文件。

请教高手一道关于c语言do while循环的题
你在printf("是否继续?(Y\/N)\\n"); 这句话前设置一个断点看看会否执行。楼上说的对,或者是用 scanf("%c",&x);我调试过了,改成下面这样可以了.要注意的是,1不用int类型,否则除法会损失数据 2之前不能成功运行scanf可能是因为前面输入a,b值之后又输入了回车,或许还有其他空格什么的,这...

在C语言中,为什么我的一个 scanf代码在第二次循环操作时,那步骤不执...
因为scanf输入要按回车,输入一个字符后回车,计算机实际上接收了两个字符,即:字符+回车。试一下flushall(); or fflush(stdin);

用C语言写了一段代码,输入两个数,比较大小,但是运行后输入数据程序就崩...
后使用,并且printf输出的类型不对,代码太婆妈,printf是输出,scanf才是输入.修改如下:include "stdio.h"float max(float x,float y){ return x>y?x:y;} void main(){ float a,b,c;scanf("%f,%f,%f",a,b,c);printf("the max is %f\\n",max(max(a,b), c) );} ...

C语言 为什么y和z的值没有交换 求大佬指教
注意函数f的前面是void,也就是并不向主函数返回值。不管函数f经过计算,形参改变为什么值,由于并不向主函数返回值,因此主函数中实参的值始终是不变的。

C语言结构体输入,大家帮忙看一下为什么第二轮输入就不行了
输入的每个循环一开始先用fflush()清除一下stdin缓冲区的残留数据:for(i=0;i<2;i++){ fflush(stdin); \/* 加这一行! *\/ printf("Input no:");gets(stu[i].no);...

c语言,输入一句英语,把单词分别输出后换行。 如 输入 thank you 输出...
你是不是想将输入的字符串,一个字符,一个字符地打印出来?

c语言换行为什么输出两行空行?
就是说“ 5 + 回车 ”这样一次输入,读入了2个字符,执行了2次循环 第二次循环中字符 '\\n' 作为 %c 被输出了,所以你会感觉多了一行 scanf就是这个特点,修改一下程序便可解决:include<stdio.h> int main(){ char a;while(scanf("%c",&a)){ if(a=='#') break;else { if(a!='...

相似回答