wujiashen666 2023-01-07 20:01 采纳率: 100%
浏览 62
已结题

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

在写一道洛谷题目
输出与预期不符
#include<stdio.h>
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吗,为何问题出现在这里?
  • 写回答

1条回答 默认 最新

  • 「已注销」 优质创作者: python技术领域 2023-01-07 20:20
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 请采纳用户回复 1月8日
  • 创建了问题 1月7日