我是一个相当新的编码和我正在学习C.我的班级讲师给了一个编写程序的任务,该程序将告诉我们哪些整数是"完美的数字" (不包括数字本身的因素加起来的数字。例如,6 = 1 + 2 + 3所以6是一个完美的数字。)我面临着代码I' ve的一些麻烦写的,希望得到一些建议。
#include <stdio.h>
int main(void) {
int number, counter, sum;
sum = 0;
printf("For the integers from 1 to 1000:\n");
for (number = 1; number <= 1000; number++) {
counter = 1;
while (counter <= number - 1) {
if ((number - 1) % counter == 0) {
sum += counter;
}
}
if (sum == number) {
printf("%d is a perfect number.\n", number);
}
}
return 0;
}
这是我写过的代码。我面临的问题是,当我运行程序时,它只打印&#34;对于从1到1000的整数:&#34;然后停止该程序甚至没有终止或任何东西。
除了我提到的问题之外,我们非常感谢任何建议或建议。
谢谢!
答案 0 :(得分:3)
你的程序没有退出的原因是因为你有一个无限的while循环。 counter
始终小于number - 1
,因为它们都不会在循环中被修改。某些IDE为此提供了语法高亮样式警告。要解决此问题,请为计数器添加增量:
while (counter <= number - 1) {
if ((number - 1) % counter == 0) {
sum += counter;
}
counter++;
}
另外,if ((number - 1) % counter == 0)
中也存在逻辑错误(与无限循环无关)。这检查输入数字的减少是否完美。您应该将其更改为if (number % counter == 0)