为什么num必须先定义为0啊

定义部分如果num我没写等于0时答案就会不正确?

题目描述
输入10个整数,求它们的平均值,并输出大于平均值的数据的个数。

输入格式
10个数

输出格式
大于平均数的个数

样例输入
1 2 3 4 5 6 7 8 9 10
样例输出
5


```c

#include 
int main(){
    int a[10]={0},i,num=0,average=0;
    for (i=0;i<10;i++){
        scanf("%d",&a[i]);
        average+=a[i];
    }
    average/=10;
    for(i=0;i<10;i++){
        if(a[i]>average){
            num++;
        }
    }
    printf("%d",num);
    return 0;
}
运行结果及报错内容:上面的代码是正确的,然后结果输出是5,如果我把num=0去掉,答案就会变成6

如果您没定义初始值,按理说你这个程序是跑不起来的;
当您未定义初始值的时候,系统会给您自动分配一个
可以通过调试看出来

img

你不给他初值 他就是随机数 不初始化的值怎么使用++?

只有赋值为0,才能确保是从0开始,然后每次加1的,不给值的话不同编译软件结果不同吧,可能是随机数,可能是1开始,结果就是6

就是没初始化吧,不初始化就是系统给的值1

#include <stdio.h>
int main(){
int a[10]={0},i,num,average=0;
printf("%d",num); //这里就会输出num=1,你可以试试
for (i=0;i<10;i++){
scanf("%d",&a[i]);
average+=a[i];
}
average/=10;
for(i=0;i<10;i++){
if(a[i]>average){
num++;
}
}
printf("%d",num);
return 0;
}

```

变量定义没有加static,默认为auto 型,此时,不给初值,变量的初值是随机的。

如果加了static不给初值,变量的初值是默认的 0。

不能说不赋初值就不行,对于局部变量,不赋初值的话,其实里面存的是一个随机的值,谁也不知道是多少

变量使用时一定要初始化,其实你不一定要赋值0,其他数也行,最后减去这个数就行