如果用户输入的数字不遵循if
语句中定义的函数,我试图让程序再次循环,最多三次。代码原样,只循环一次然后退出。我是否错误地键入了for
循环,或者if...else
语句错误了吗?
#include <iostream>
using std::cout; using std::cin; using std::endl;
int main() {
cout << "Enter a positive odd number less than 40: ";
int num = 0;
for (int a = 0; a < 3; ++a);
cin >> num;
{
if (num < 40 && num > 0 && num % 2 == 1)
{
cout << "Thank you!" << endl;
}
else cout << "That is incorrect, try again!" << endl;
}
}
答案 0 :(得分:5)
我是否错误地输入了for循环,还是if _ else语句错了?
两者。您应该(1)删除for
声明后面的分号; (2)将cin >> num
移入for
循环体; (3)在break;
内添加if
。
for (int a = 0; a < 3; ++a)
{
cin >> num;
if (num < 40 && num > 0 && num % 2 == 1)
{
cout << "Thank you!" << endl;
break;
}
else cout << "That is incorrect, try again!" << endl;
}
BTW1:尝试使用调试器,然后你会发现事实上发生了什么。
BTW2:cin >> num
失败时代码将失败(例如,用户输入的值无效),您可能需要检查cin >> num
的结果,以处理案例。如:
for (int a = 0; a < 3; ++a)
{
if (cin >> num)
{
if (num < 40 && num > 0 && num % 2 == 1)
{
cout << "Thank you!" << endl;
break;
}
else cout << "That is incorrect, try again!" << endl;
}
else
{
cin.clear(); // unset failbit
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // skip bad input
cout << "Wrong input, try again!" << endl;
}
}
答案 1 :(得分:0)
bool isValid = false;
int num;
while(!isValid)
{
cout << "enter a positive odd integer " << endl;
cin >> num;
if(num < 40 && num > 0 && num % 2 == 1 )
{
cout << "thank you"<<endl;
isValid = true;
}
else
isValid = false;
}
为什么不使用这样的东西,它会循环直到isValid = true,这只会在你的条件满足时才会发生?
我理解,我猜,如果你正在做一个学校项目或某些事情而且你被迫用for循环来做,但一般来说这对于像这样的东西比for循环更好的解决方案!