程序在执行scanf()
并接受用户输入后自动终止。
这是一个在给定范围内打印完美数字的程序
#include <stdio.h>
void main() {
int i, n, j, sum;
printf("enter the number \n ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum = 0;
for (j = 1; j <= i; j++) {
if (n % j == 0) {
sum += j;
}
}
if (sum == n) {
printf("%d", i);
}
}
}
您的代码中有多个错别字:
j
,而不是i <= j
i % j
,而不是n % j
if (sum == i)
,而不是if (sum == n)
此处为更正版本:
#include <stdio.h>
int main() {
int i, start, end, j, sum;
printf("enter the range: ");
if (scanf("%d%d", &start, &end) != 2)
return 1;
for (i = start; i <= end; i++) {
sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d\n", i);
}
}
// uncomment this if running from an IDE
//scanf("%*s");
return 0;
}
如果C0]后<您有可能在IDE中运行程序,而该IDE在执行后不会使终端窗口保持打开状态。您可以在scanf()
末尾的scanf("%*s");
语句之前添加一个额外的return 0;
,以使程序等待更多输入。
简单的原因是使用输入main()
时,100
永远不会是sum
,因此不会执行100
。
性能提示-完美数字
您编写的代码仅在n