4

我想使用 getch 函数来获取一个字符......所以用户只能输入 Y OR 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();
}
4

5 回答 5

5
yn != 'Y' || yn != 'y' || yn != 'N' || yn!='n'

您需要使用 && 而不是 || 这里。假设您输入了“Y”。所以第一次测试 yn != 'Y' 是假的,但第二次测试 yn != 'y' 是真的。所以条件为真,因为它们是 ORed。这就是它再次进入循环的原因。

于 2010-12-02T11:27:17.410 回答
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
}
于 2011-04-30T07:27:49.577 回答
1

你的意思是&&不是||。

变量“yn”是一个字符。要使该表达式计算为假,该字符必须同时为 Y、y、N 和 n,这是不可能的。

你需要:

while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')
于 2010-12-02T11:28:20.700 回答
1

while 语句中的逻辑有缺陷,您需要逻辑与 (&&) 而不是逻辑或 (||)。

此外,这也是使用 do { ... } while(); 的好地方。

于 2010-12-02T11:29:03.000 回答
1

while循环的条件是嵌套的OR。为了使它起作用,您可能需要将它们更改为 AND:

do {
   yn = getch()
} while(yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n');
于 2010-12-02T11:31:53.947 回答