2017-02-25 149 views
-1

我最近在C++中編寫了一個計算輸入數字(下面的代碼)中數字總和的程序。該程序以這種方式工作。要求用戶輸入自然數x。然後該程序被放入一個while循環中,該循環意味着繼續,直到x達到0. y是確定數字的最後一位的簡單等式(即,x=123,y=3)。 D_sumx(即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; 
} 

屏幕:

screen image

+0

該程序對超過10位數的數字無法正常工作。問題是什麼?如何解決它? –

+2

你可以看看這個鏈接http://en.cppreference.com/w/cpp/language/types,看看值的範圍部分 –

+1

「程序工作正常,直到你把數字超過10數字」。 32位有符號整數的最大可能位數爲10,如果超過(2^31)-1,則整數將溢出,產生未定義的行爲。你可以只使用一種容量較大的類型,即「長」或甚至使用「長」。 – George

回答