2012-09-13 28 views
0

我想做一个程序,允许用户输入一个正整数,并且程序将输出每个数字加在一起的总和。例如,如果用户输入54,程序将输出9。出于某种原因,该计划正在输出巨大的数字。当输入为54时,输出将读取类似51654512191235的内容。我是新的C++编程,但我没有看到一个单一的东西错这个代码..为什么我通过这个程序获得大量的输出?

//This program takes a positive integer 
//from the user, and adds all the digits 
//of the number together. 

#include <stdio.h> 

int main() { 
    system("clear"); 
    int given, add, hold, i; 

    printf("Enter a positive integer (up to 10 digits): "); 
    scanf("%d", &given);      //User input 

    for (i = 0; i < 10; i++) {    //Loop to add digits 
    hold = (given % 10); 
    given = (given/10); 
    add = (add + hold); 
    } 
    printf("Sum of the digits is %d\n", add); //Output 
} 
+4

你没有初始化'add'。 – cnicutar

+0

这可能是我的,但我从来没有听说过“明确”是一个命令。也许你正在那里寻找'cls'。 – chris

+0

我的直觉告诉我这是因为你还没有将'add'初始化为0.编辑:哎呦,太慢 –

回答

0
int given, add, hold, i; 

您还没有初始化add,所以它包含不确定的数据,又名垃圾。在未指定时使用它的值是未定义的行为。

0

在循环之前插入add = 0;以查看是否有帮助。

+0

对不起 - 你的回复是5分49.52235秒太晚:) – paulsm4

+2

我不知道我被定时。 – John

+2

我们都*计时。分类,分类,分类,判断,评估,观察,评分,轮询,加盖,归档和索引。所有的时间:)不要让它让你偏执,但;)只是不要让他们知道你知道他们正在观察你。 – paulsm4

0

我认为for循环是错误的
循环将运行10次,而scanf函数将只需要输入高达int数据类型的上限即32768
你应该给出一个长数据类型。 ,使for循环

for(;given!=0;) 
    { 
     hold = (given % 10); 
     given = (given/10); 
     add = (add + hold); 
    } 

当然初始化相加为零。

相关问题