如何计算输入数字的正约数之和?C语言代码求助
正约数求和功能的代码修改方案
以下是修复后的完整代码,同时标注关键修改点:
#include<stdio.h> #pragma warning (disable:4996) int main() { int input, sum = 0; // 初始化求和变量为0 printf("Input the number:"); scanf("%d", &input); printf("\nThe positive divisor:"); // 若需将输入数字自身纳入正约数,将循环条件改为 i <= input for (int i = 1; i < input; i++) { if (input % i == 0) { printf("%d\t", i); sum += i; // 累加每个找到的正约数 } } printf("\nThe sum of the divisor is:%d", sum); // 直接输出求和结果,无需取地址 return 0; }
关键修改说明:
- 初始化求和变量:原代码中
sum未初始化,直接使用会触发未定义行为,必须初始化为0才能保证累加逻辑正确。 - 添加约数累加逻辑:在判定
i是输入数的约数后,通过sum += i将当前约数计入总和。 - 修正输出参数错误:原代码中
printf传入了&sum(变量的内存地址),这会输出地址值而非实际求和结果,改为直接传入sum即可。 - 可选调整:包含自身约数:正约数的标准定义包含数字本身(例如6的正约数为1、2、3、6),如果需要符合这个定义,将循环条件从
i < input修改为i <= input即可。
内容的提问来源于stack exchange,提问作者Adrian Ng
相关产品推荐
相关产品推荐

