-1
我最近在C++中編寫了一個計算輸入數字(下面的代碼)中數字總和的程序。該程序以這種方式工作。要求用戶輸入自然數x
。然後該程序被放入一個while循環中,該循環意味着繼續,直到x
達到0. y
是確定數字的最後一位的簡單等式(即,x=123
,y=3
)。 D_sum
是x
(即x=123
,d_sum=3
)中的數字之和。 x=(x-y)/10
用於幫助計算下一個數字(即x=(123-3)/10=120/10=12
)。該程序工作正常,直到您輸入一個數字超過10位(屏幕下方)。C++數字總和程序while循環
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int x,y;
int d_sum = 0;
cout << "x= ";
cin >> x;
while(x > 0)
{
y=x % 10;
d_sum++;
x = (x - y)/10;
}
cout << d_sum << endl;
system("pause");
return 0;
}
屏幕:
該程序對超過10位數的數字無法正常工作。問題是什麼?如何解決它? –
你可以看看這個鏈接http://en.cppreference.com/w/cpp/language/types,看看值的範圍部分 –
「程序工作正常,直到你把數字超過10數字」。 32位有符號整數的最大可能位數爲10,如果超過(2^31)-1,則整數將溢出,產生未定義的行爲。你可以只使用一種容量較大的類型,即「長」或甚至使用「長」。 – George