0

我正在尝试制作一个允许用户输入正整数的程序,该程序将输出每个数字相加的总和。例如,如果用户输入54,程序将输出9。出于某种原因,该程序正在输出异常巨大的数字。何时54是输入,输出将读取类似5165451or的内容2191235。我是 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

3 回答 3

0
int given, add, hold, i;

你还没有初始化add,所以它包含未指定的数据,也就是垃圾。在未指定时使用它的值是未定义的行为。

于 2012-09-13T19:14:50.617 回答
0

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

于 2012-09-13T19:18:36.783 回答
0

我认为 for 循环是错误
的循环将运行 10 次,而 scanf 只会将输入输入到 int 数据类型的限制,即 32768。
你应该给定一个 long 数据类型。并使 for 循环为

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

当然初始化添加为零。

于 2012-09-13T19:30:29.937 回答