我有最奇怪的問題!我需要製作一個程序,用戶必須輸入一個10位數字。所以,我檢查輸入用do-while循環:Do-while循環不會結束嗎?
do
{
cout<<"Enter a 10-digit number: "<<endl;
cin>>number;
}
while (numberOfDigits(number) != 10);
這裏是numberOfDigits功能:
int numberOfDigits(int num)
{
int d = 0;
while (num > 0)
{
num /= 10;
d++;
}
return d;
}
所以,當我輸入一個數小於10,它循環並轉到啓動(告訴我再次輸入一個10位數字)。但是,當我輸入的數字超過10位時,將出現無限循環,並且控制檯不會停止打印「輸入10位數字:」...任何想法?
嘗試將int更改爲long long – marsh 2014-11-20 21:06:46
int通常爲32位寬;一個32位(帶符號)的整數值只能達到2 ** 31,或者剛剛超過20億,這正好是10位數字。除此之外的任何東西都不適合int,並且'cin'進入一個錯誤狀態,它不能讀取任何其他東西(如果你輸入的話會發生同樣的情況,例如「cat」而不是數字)。驗證輸入的* safe *方法是將所有內容作爲字符串讀取,然後檢查它,然後在驗證通過時將其轉換爲最終類型('int'等)。 – Cameron 2014-11-20 21:10:20
請發佈[MCVE](http://stackoverflow.com/help/mcve)。 – 2014-11-20 21:14:19