c++ - 虽然在 y/n 输入 C++ 后不会开始循环

标签 c++ loops while-loop

问题: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/

相关文章:

javascript - 使用 while 循环将整数拆分为数字,然后将数字相乘

java - java代码中循环内的增量问题

c++ - 绘图对象 - 更好的类设计?

python - 使用函数的输出作为函数新迭代的输入

php - 模糊 DISTINCT 值

ios - 使用循环生成 uisegmentedcontrol 按钮

algorithm - while循环时间复杂度

c++ - 这个代码块会导致内存泄漏吗?

c++ - std::this_thread::get_id 是否独立于线程的创建方式工作?

c++ - std::find 和 std::map.find 都是 O(logN) 吗?