数组并初始化多个计数器 #包括 int main(){ int-niz[100],i,j,k,l; j=0;//k=l=0; printf(“非现场niz(-1表示结束)”); 做{ scanf(“%d”、&niz[i]); 如果(niz[i]%5==0) j++; //如果(niz[i]%7==0)k++; //如果(niz[i]%11==0)l++; }而(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); 返回(0); }

数组并初始化多个计数器 #包括 int main(){ int-niz[100],i,j,k,l; j=0;//k=l=0; printf(“非现场niz(-1表示结束)”); 做{ scanf(“%d”、&niz[i]); 如果(niz[i]%5==0) j++; //如果(niz[i]%7==0)k++; //如果(niz[i]%11==0)l++; }而(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); 返回(0); },c,arrays,C,Arrays,这段代码有什么问题,它可以处理注释,但当我取消选中注释时,它会导致崩溃。我要解决的问题是,有多少数字可以除以5、7和11。垃圾值@variableI。因此,您正在尝试访问数组的未索引部分 初始化i=0 确保循环在再次到达数组末尾之前结束 do { //你想干什么都行 } 由于所有变量i、j、k、l都是自动(存储类)整数,因此(niz[i]!=-1&&i,默认情况下,这些变量将具有不确定的(未指定的值或陷阱表示)值。 因此,您需要显式初始化变量 而且, 在代码中,您没有增加“i”的值,那么使用数组

这段代码有什么问题,它可以处理注释,但当我取消选中注释时,它会导致崩溃。我要解决的问题是,有多少数字可以除以5、7和11。

垃圾值@variable
I
。因此,您正在尝试访问数组的未索引部分

  • 初始化
    i=0

  • 确保循环在再次到达数组末尾之前结束

    do
    {
    //你想干什么都行
    }
    
    由于所有变量i、j、k、l都是自动(存储类)整数,因此(niz[i]!=-1&&i,默认情况下,这些变量将具有不确定的(未指定的值或陷阱表示)值。 因此,您需要显式初始化变量

    而且, 在代码中,您没有增加“i”的值,那么使用数组有什么意义呢。 所有输入编号将存储在niz[i](其中“i”可能是有效索引,也可能不是有效索引),因此每个新输入将覆盖前一个输入

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

    #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);
    }
    

    如果初始化
    i
    ,会发生什么情况?这种奇怪、不可靠的行为在未初始化的变量处于中心位置时非常常见,我不知道您的
    scanf()在哪里
    正在编写。要调试此类问题,请查看valgrind等工具,该工具可分析可能的内存损坏。请缩进代码,使其更具可读性。此外,如果注释和变量名为英语,我们将更容易理解。
    http://stackoverflow.com/questions/6212921/is-un-initialized-integer-always-default-to-0-in-c