我正在尝试创建一个允许用户输入正整数的程序,程序将输出加在一起的每个数字的总和。例如,如果用户输入54
,程序将输出9
。由于某种原因,该计划输出了巨大的数字。当54
为输入时,输出将显示为5165451
或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
}
答案 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);
}
当然初始化添加到零。