【发布时间】:2015-04-03 23:06:07
【问题描述】:
我正在尝试编写一个程序来打印用户输入的任何数字的偶数除数。出于某种原因,当用户输入 10 并打印出程序时:
10 is evenly divisible by:
1, 3, 2, 27, logout
我不知道这些数字是从哪里得到的。如果我取消注释倒数第二个 printf 语句,我会得到以下信息:
10 is evenly divisible by:
i = 0
1, i = 1
2, i = 2
5, i = 3
32767, logout
为什么要这样做?
这是我的代码:
#include <stdio.h>
int main(void ) {
int n, i, leng = 0, arr[leng];
printf("Enter an integer\n");
scanf("%i",&n);
printf("%i is evenly divisible by:\n", n);
for (i = 1; i <= n / 2; i++) {
if (n % i == 0) {
arr[leng] = i;
leng++;
}
}
for (i = 0; i <= leng; i++) {
printf("i = %i\n", i);
printf("%i, ", arr[i]);
}
}
【问题讨论】:
-
您将 arr 的长度设置为您设置为 0 的长度。这将中断,您需要将其分配为 n/2 或类似
-
leng = 0, arr[leng];