不是说不给变量赋初值时变量默认为0吗

在写一道洛谷题目
输出与预期不符
#include
int main(){
    int a[10],i,height;
    int q;
    for(i = 0;i < 10;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&height);
    for(i = 0;i < 10;i++){
        if(height + 30 >= a[i]){
            q++;
        }
    }
    printf("%d",q);
    return 0;

}
输入100 200 150 140 129 134 167 198 200 111 110 输出6
我给q设置一个初值0即可解决,即int q = 0;但不是说不给变量赋初值时变量默认为0吗,为何问题出现在这里?

全局变量是可以保证赋初值的,局部变量不能保证。
题主可以看到洛谷题解往往把数组声明为全局变量,因为如果声明在main()里,可能会出现一些“脏数据”。
对于int变量,将赋值为0是一个良好的习惯。
如果我的回答对你有帮助,还望采纳!