问题描述
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' 循环。