我正在通过 Ivor Horton的Beginning Visual C ++ 2012 进行工作,我在第三章中练习二:决策和循环。这是我的代码:
#include <iostream>
using namespace std;
int main()
{
char letter;
int vowels = 0;
do
{
cout << "Enter a letter, and enter q or Q to end" << endl;
cin >> letter; // Enter a letter
switch (letter)
{
case 'a' || 'A' || 'e' || 'E' || 'i' || 'I' || 'o' || 'O' || 'u' || 'U': // If letter is a vowel, add to vowels variable
vowels++;
break;
default: // If letter is not a vowel, break loop
break;
}
} while (letter != 'Q' || letter != 'q');
cout << "You entered " << vowels << " vowels.";
return 0;
}
此程序的目的是允许用户输入一个字母,直到他们输入q或Q,此时do ... while循环结束,程序向用户显示他们输入的元音数。
当我运行它时,程序在我输入Q或q时不会退出。为什么?我该如何解决这个问题?
答案 0 :(得分:5)
letter != 'Q' || letter != 'q'
含义...
字母不是Q
or
不是q
...所以它总是如此......好像它是Q
,它不会是q
},如果是q
,则不会是Q
...如果信件一次为Q
和q
,那将只是错误。
只需使用:
letter != 'Q' && letter != 'q'
答案 1 :(得分:2)
De Morgan的法律。
Not (A or B)
De Morgan的法律规定,
Not A and Not B
相当于Enter the 1st number:12
Enter the 2nd number:6
Result is 4
。
答案 2 :(得分:1)
letter != 'Q' || letter != 'q'
这总是如此。你的意思是&amp;&amp;。
和case
的NB:它不能正常工作,你可以写case 'a': case 'A' ... :
=&GT;所有元音案例都会落到vowels++;
答案 3 :(得分:-1)
试试这个
#include <iostream>
using namespace std;
int main()
{
char letter;
int vowels = 0;
int flag = 0;
do
{
cout << "Enter a letter, and enter q or Q to end" << endl;
cin >> letter; // Enter a letter
switch (letter)
{
case 'a' || 'A' || 'e' || 'E' || 'i' || 'I' || 'o' || 'O' || 'u' || 'U': // If letter is a vowel, add to vowels variable
vowels++;
break;
case 'q' || 'Q' : flag = 1;
break;
default: // If letter is not a vowel, break loop
break;
}
} while (flag !== 1);
cout << "You entered " << vowels << " vowels.";
return 0;
}