我想使用getch函数来获取一个字符......所以用户只能输入Y或N字符..但是while循环不起作用......我需要帮助!感谢
#include <stdio.h>
main(){
char yn = 0;
printf("\n\t\t Save changes? Y or N [ ]\b\b");
yn = getch();
while (yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n') { //loop is not working
yn = getch();
}
if (yn=='Y' || yn=='y') printf("Yehey");
else printf("Exiting!");
getch();
}
答案 0 :(得分:5)
yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n'
你需要使用&amp;&amp;而不是||这里。假设您已输入“Y”。所以第一次测试yn!='Y'是假的,但第二次测试yn!='y'是真的。所以条件是正确的,因为它们是ORed。这就是它再次进入循环的原因。
答案 1 :(得分:1)
你的意思是&amp;&amp;不是||。
变量“yn”是一个字符。要使该表达式求值为false,该字符必须同时为Y,y,N和n,这是不可能的。
你需要:
while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')
答案 2 :(得分:1)
while语句中的逻辑存在缺陷,您需要逻辑AND(&amp;&amp;)而不是逻辑OR(||)。
此外,这将是一个使用do {...} while();
的好地方答案 3 :(得分:1)
while
循环的条件是嵌套OR。要使它工作,您可能希望将它们更改为AND:
do {
yn = getch()
} while(yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n');
答案 4 :(得分:1)
//use of getch() function
#include<iostream.h>
#include<conio.h>
//main function starts excuition
viod main()
{
clrscr();//to clear the screen
//veriable decleration
int a;//Any integer
int b;//Any integer
int c;//Any integer
cout<<"Enter the first number\n";//prompt
cin>>a;//read the integer
cout<<"Enter the second number\n";//prompt
cin>>b;//read integer
c = a + b;//the value of xum of "a" and "b" is assigned to "c"
cout<<"sum is\t"<<c;
getch();//to stay the screen
}