【发布时间】:2013-08-24 21:57:27
【问题描述】:
这是一个计算一个数字的除数的程序,但它给出的除数比该数字的实际除数少一个。
#include <stdio.h>
int i = 20;
int divisor;
int total;
int main()
{
for (divisor = 1; divisor <= i; divisor++)
{
if ((i % divisor == 0) && (i != divisor))
{
total = total++;
}
}
printf("%d %d\n", i, total);
return 0;
}
数字 20 有 6 个除数,但程序说有 5 个除数。
【问题讨论】:
-
测试
i != divisor拒绝最终除数 -
你真的不应该在这段代码中使用任何全局变量。您可以通过在具有
total++的条件主体中添加printf("%d\n", divisor);语句来自己调试问题。你会看到哪个除数没有打印(20),这会给你一个线索,让你知道在哪里寻找问题。
标签: c math counter division divider