数组和初始化多个计数器

时间:2014-08-02 19:02:06

标签: c arrays

#include <stdio.h>
int main() {
    int niz[100], i, j, k, l;
    j = 0; // k=l=0;
    printf("Unesite niz (-1 for end)");
    do {
        scanf("%d", &niz[i]);
        if (niz[i] % 5 == 0)
            j++;
        // if(niz[i]%7==0) k++;
        // if(niz[i]%11==0) l++;
    } while (niz[i] != -1);
    printf("Broj djeljivih sa 5 je:%d", j);
    // printf("Broj djeljivih sa 7 je:%d",k);
    // printf("Broj djeljivih sa 11 je:%d",l);
    return (0);
}

此代码有什么问题,它可以正常使用注释,但是当我取消选中注释时,它会让我崩溃。我遇到的问题是要解决有多少数字可以除以5,7和11。

2 个答案:

答案 0 :(得分:1)

垃圾值@变量i。所以你试图到达数组中没有索引的部分。

  1. 初始化i = 0;

  2. 确保循环在再次到达数组之前结束。

    do { // Whatever you want to do } while(niz[i]!=-1 && i<100);// Add 1 more condition for i less than 100

答案 1 :(得分:0)

由于所有变量i,j,k,l都是自动(存储类)整数,因此默认情况下,这些变量将具有不确定(未指定的值或陷阱表示)值。 因此,您需要明确初始化变量。

此外, 在代码中,您没有递增“i”的值,那么使用数组的重点是什么。 所有输入数字都将存储在niz [i](其中“i”可能是或不是有效索引),因此每个新输入都将覆盖前一个输入。

我发现以下链接对您的问题非常有用。

http://stackoverflow.com/questions/6212921/is-un-initialized-integer-always-default-to-0-in-c