一个整数的值无处不在

时间:2016-12-24 17:24:10

标签: c

我正在尝试使用调试器运行下面的代码。在接下来的循环“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]);
}

1 个答案:

答案 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