我正在尝试使用调试器运行下面的代码。在接下来的循环“for (i=0;i<n;i++) pin[i]=0;
”结束时,n的值从我给出的值变为0并且变为0.我无法理解为什么会发生这种情况,所以你对它为什么会发生的帮助会很大赞赏。哦,还有一件事。如果我忽略它并且只要我给出一个值,我就将该值赋给另一个整数,以便在n变为0时能够使用它,我的程序崩溃了。例如,当您使用未赋值的变量时,会出现类型崩溃。
main()
{
int i,j,k,n,pin[n];
printf("Give the size of the array:\n");
scanf("%d", &n);
do{
printf("Give the number of the iterations:\n");
scanf("%d", &k);
}while (k<1||k>n);
for (i=0;i<n;i++)
pin[i]=0;
for (j=0;j<k;j++){
for (i=0;i<n;i++){
if (i%j==0){
if (pin[i]==0)
pin[i]=1;
else
pin[i]=0;
}
}
}
for (i=0;i<n;i++)
printf("%d ", pin[i]);
}
答案 0 :(得分:1)
您不能除以0并定义pin[n]
,其中n
已初始化。
#include <stdio.h>
int main() {
int i, j, k, n;
printf("Give the size of the array:\n");
scanf("%d", &n);
int pin[n];
do {
printf("Give the number of the iterations:\n");
scanf("%d", &k);
} while (k < 1 || k > n);
for (i = 0; i < n; i++)
pin[i] = 0;
for (j = 0; j < k; j++) {
for (i = 0; i < n; i++) {
if (j != 0 && i % j == 0) {
if (pin[i] == 0)
pin[i] = 1;
else
pin[i] = 0;
}
}
}
for (i = 0; i < n; i++)
printf("%d ", pin[i]);
}
测试
Give the size of the array:
3
Give the number of the iterations:
2
1 1 1
测试2
Give the size of the array:
5
Give the number of the iterations:
4
1 1 0 0 0