问题:while
无法在用户输入 y
时开始循环。
我花了几个小时在包括 Stack Overflow 在内的所有论坛中搜索线索,并试图解决这个问题(我自己学习 C++)。根据我读过的内容,我尝试过: do
循环在开始时可以工作,但它通过将先前的 numb
条目乘以下一个条目的阶乘(冲洗问题?) ,我尝试了 break
并且它停止了计算,但它也停止了而没有得到 cout <<“Do another?”。我还尝试在语句和 if 语句周围添加/移动大括号(绝望中)。
//problem #6 page 127 Robert Lafore OOP Prg C++ 4th ed.
#include <iostream>
using namespace std;
int main()
{
unsigned int numb;
unsigned long fact = 1; //long for larger numbers
char ch;
cout << "Enter a number ";
cin >> numb;
for (int j = numb; j > 0; j--) //multiply 1 by
{
fact *= j;
cout << "Factorial is "<< fact << endl;
cout << "Do another? (y/n)\n";
cin >> ch;
}
while(ch !='n');
return 0;
}
最佳答案
你的逻辑不太对 - 你需要执行一次操作,然后询问,然后重做整个操作。
现在,您为您的操作执行一个for
循环,然后获取用户键入的字符每次循环迭代,然后开始一个while
永不终止的循环。
do/while
是一个很好的选择:
do
{
fact = 1; // Reinitialize for subsequent loops
cout << "Enter a number ";
cin >> numb;
for(int j = numb; j > 0; j--) //multiply 1 by
{
fact *= j;
}
cout << "Factorial is " << fact << endl;
cout << "Do another? (y/n)\n";
cin >> ch;
}
while (ch == 'y'); // Switched to make anything other than 'y' break out
关于c++ - 虽然在 y/n 输入 C++ 后不会开始循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18263083/