为什么我用这个程序得到大量的输出?

时间:2012-09-13 19:12:38

标签: c

我正在尝试创建一个允许用户输入正整数的程序,程序将输出加在一起的每个数字的总和。例如,如果用户输入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
}

3 个答案:

答案 0 :(得分:0)

int given, add, hold, i;

您尚未初始化add,因此它包含未指定的数据,即垃圾。在未指定时使用其值是未定义的行为。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我认为for循环是错误的 循环将运行10次,而scanf将仅输入int数据类型的限制,即32768 你应该给出一个长数据类型。 并将for循环设为

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

当然初始化添加到零。