2010-12-02 126 views
4

我想使用getch函数来获得一个字符...所以用户只能输入Y或N字符..但while循环不工作...我需要帮助!由于帮助getch()函数

#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(); 
} 
+1

这将有助于解释它是如何不工作,或者您所作的任何努力来解决这个问题。 – wj32 2010-12-02 11:26:07

+1

表达式x!= A || x!= B`将始终为真。 `x`只有一个值:) – ruslik 2010-12-02 11:30:00

回答

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

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

+0

即使我使用&& ...它仍然不起作用 – newbie 2010-12-02 11:30:01

1

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

变量“yn”是一个字符。为了将该表达式评估为假,该字符必须同时是Y,y,N和n,这是不可能的。而不是逻辑或

while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N') 
1

在while语句的逻辑是有缺陷的,你需要的逻辑AND(& &)(||):

需要。另外,这将是一个很好的使用do {...} while()的地方;

1

while循环的条件是嵌套的OR。它的工作,你可能想将它们转换为与运算:

do { 
    yn = getch() 
} while(yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n'); 
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 
}