函数require()中的循环需要3个条件,a> b或“a”或“b”不是数字。即使我不满足条件并放入2个整数,它只是再次循环。布尔条件在do-while循环中无法正常工作
另外,当我把一个字符,然后它只是无休止地循环“输入最小数字输入最大数量”忽略了cins。有人知道为什么我是初学者所以这可能是真的很明显
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
int random(int minN, int maxN) //generates random number within specified range
{
srand (time(NULL));
int x = (maxN - minN);
int y = minN + (rand() % (x+1));
return y;
}
int require() //makes sure a < b and both are digits
{
int a,b;
do {
cout << "Enter minimum number" << endl;
cin >> a;
cout << "Enter maximum number. Note: Has to be greater or equal to minimum." << endl;
cin >> b;
} while (a > b || !isdigit(a) || !isdigit(b));
return random(a,b);
}
int main()
{
cout << require() << endl;
}
对不起,我的措辞 – Foxic 2013-02-15 06:21:34
'isdigit'是测试人物。如果您将整数作为参数传递,它会将它们解释为特定编码下的字符(取决于区域设置)。 – jogojapan 2013-02-15 06:22:31
另外,当我满足条件时,你又指什么意思,再次循环_。这就是do-while循环的工作原理:只要条件满足,它就会循环。当条件不再满足时停止。 – jogojapan 2013-02-15 06:24:16