2017-02-25 70 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

回答