是否可以在 C++ 的 do while 循环中创建一个 while 循环?

问题描述

int main() 
{
    int num;
    char continue_ = 'N';

    do 
    {
        cin>>num;
        
        while(num <=10 && num >= 1)
        {   
            int new_num = factorial(num);
            cout<<new_num;
        }

        cin>> continue_;
            
    }
    while(continue_ == 'y' || continue_ == 'Y' );
    
    return 0;
}

我已经创建了一个有效的阶乘函数。我的教授希望我们在 do-while 中有一个 while 循环,它验证 num 的最小值为 1,最大值为 10。但是,当我无限地运行它时,它会像 while 循环一样继续打印答案。我尝试在打印后休息一下。但是,它完全停止了程序,有人可以帮忙吗?

解决方法

如果输入'num'在1-10之间,则程序进入第二个while循环并打印new_num。但是 'num' 变量值不会在第二个 while 循环内更新。因此,第二个 while 循环的条件始终为真。因此,程序将无限打印“new_num”。如果您想验证 'num' 是否在 0-10 之间,请使用 'if' 条件而不是 'while' 循环。