2010-12-02 125 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 
}