函數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