4

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();
}
4

5 に答える 5

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

||の代わりに&&を使用する必要があります ここ。「Y」を入力したとします。したがって、1番目のテストyn!='Y'は偽ですが、2番目のテストyn!='y'は真です。したがって、ORで処理されるため、条件は真になります。それが再びループに入っている理由です。

于 2010-12-02T11:27:17.410 に答える
1

あなたは&&ではなく||を意味します。

変数「yn」は1文字です。その式がfalseと評価されるためには、その文字は同時にY、y、N、およびnである必要がありますが、これは不可能です。

必要なもの:

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

whileステートメントのロジックに欠陥があるため、論理OR(||)ではなく論理AND(&&)が必要です。

また、これは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 に答える
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 に答える