#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。
答案 0 :(得分:1)
垃圾值@变量i
。所以你试图到达数组中没有索引的部分。
初始化i = 0;
确保循环在再次到达数组之前结束。
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