当条件满足时,循环未关闭时,我的代码有什么问题 我正在通过Ivor HORTN的开始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时,程序不会退出。为什么?我如何解决这个问题?字母!='Q'| |字母!='q' 这总是正确的。你是说& 对于这个案例,请注意:它不能按原样工作,您可以编写案例“a”:案例“a”…: =>所有元音的大小写都属于元音++ 字母!='Q'| |字母!='q' 意味着 字母不是Q或不是Q。。。所以这永远是真的。。。好像它是Q,它不会是Q,如果它是Q,它也不会是Q。。。若字母同时是Q和Q,那个么这就错了 只需使用: 信Q'&字母!='摩根定律当条件满足时,循环未关闭时,我的代码有什么问题 我正在通过Ivor HORTN的开始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; },c++,do-while,libstdc++,C++,Do While,Libstdc++,该程序的目的是允许用户输入一个字母,直到他们输入q或q,此时do…while循环结束,程序向用户显示他们输入的元音数 当我运行此程序时,当我输入Q或Q时,程序不会退出。为什么?我如何解决这个问题?字母!='Q'| |字母!='q' 这总是正确的。你是说& 对于这个案例,请注意:它不能按原样工作,您可以编写案例“a”:案例“a”…: =>所有元音的大小写都属于元音++ 字母!='Q'| |字母!='q' 意味着 字母不是Q或不是Q。。。所以这永远是真的。。。好像它是Q,它不会是Q,如果它是Q,它也
!( letter == 'Q' || letter == 'q' ) <=> ( letter != 'Q' && letter != 'q' )
德摩根的法律规定
非A或B等同于非A和非B。试试这个
#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;
}
字母永远不等于'Q'和'Q'不是你要求的那样,所以贴出来作为评论,但是大小写'a'| |'a'| |'e'| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |;提示编译器未正确生成代码。Occam的剃须刀应该总是暗示你的代码有错。事实上,这种情况总是正确的。更好的标题是为什么循环永远不满足终止条件?i、 为什么我错了?更确切地说,为什么编译器错了?可能是“Q”| |“Q”的重复-这并不意味着你认为它的意思。1。这不是你在C或C++中写多个案例的方式。2.你似乎试图测试‘a’和‘Q’,而不是‘Q’和‘Q’。3.你的格式化很可怕,你写C++或C++的多个案例还不是。但是谢谢你解决了其他问题。