You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言嵌套IF-ELSE语句编译错误排查及问题解析

解决「error: expected declaration or statement at the end of input」错误及深入解析

错误本质

这个编译错误的核心原因是代码的大括号({})不匹配。C语言是结构化编程语言,编译器会严格检查代码块的开闭结构,当它读到文件末尾时,发现还有未闭合的代码块(比如函数主体、if/else分支块),就会抛出这个错误。

你的代码问题定位

看你提供的代码,问题出在main函数的右大括号缺失,同时嵌套if-else结构存在逻辑漏洞:

  • 你在return 0;之后只闭合了最外层else的},但main函数开头的{没有对应的闭合}
  • 最后一个分支(当per < 1时)没有任何处理逻辑,属于逻辑遗漏,但不影响编译

修正后的代码

#include<stdio.h>

int main()
{
    float Math, English, Science, Fundamentals, per;
    
    printf("Enter GPA of 4 subject\n");
    scanf("%f %f %f %f", &Math, &English, &Science, &Fundamentals);
    
    per = (Math + English + Science + Fundamentals) / 4.0;
    
    // 优化嵌套结构为else if,提升可读性
    if(per >= 5)
    {
        printf("Your GWA is: 75\n");
    }
    else if(per >= 3)
    {    
        printf("Your GWA is: 75\n");
    }
    else if(per >= 2)
    {
        printf("Your GWA is: 85\n");
    }
    else if(per >= 1)
    {
        printf("Your GWA is: 100\n");
    }
    else
    {
        printf("Your GWA is: Invalid GPA\n");
    }    
    
    return 0;
} // 补上main函数的闭合大括号

该错误的常见触发场景

  • 大括号遗漏:写函数、if/else、for/while循环时,只写了开括号{,忘记写闭括号}
  • 大括号错位:把某个闭括号}放错位置,导致代码块提前闭合,后续代码属于未闭合的结构
  • 多行注释错误:多行注释/* ... */没有正确闭合,编译器会把注释后面的代码当成注释内容,破坏整体代码结构

内容的提问来源于stack exchange,提问作者sussy cat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:30:49