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

编写C语言成绩等级转换程序时遇语法错误:main.c:7:1标识符或'('缺失

解决C语言编译错误:expected identifier or '(' before '{' token

这个错误的根源非常明确——你在int main(void);这一行末尾多写了一个分号!

在C语言中,当你声明一个函数时(比如char lettergrade(float numgrade);),末尾需要加分号;但当你定义函数(也就是编写函数体的时候),函数头后面不能加分号,直接跟左大括号{就行。你这里把main函数的定义写成了声明的格式,编译器自然会抛出这个语法错误。

另外,你只声明了lettergrade函数,但没有实现它,编译时还会出现“未定义函数”的错误,我也帮你补上了一个基础的成绩转字母等级的实现示例。

修正后的完整代码

#include <stdlib.h>
#include <stdio.h>

// 函数声明
char lettergrade(float numgrade);

// main函数定义:去掉了多余的分号
int main(void) {
    float numgrade;
    char grade;

    printf("What is your numerical grade? ");
    scanf("%f", &numgrade);

    grade = lettergrade(numgrade);
    printf("Here is your letter grade: %c\n", grade);

    system("pause");
    return 0;
}

// 实现lettergrade函数
char lettergrade(float numgrade) {
    if (numgrade >= 90.0) {
        return 'A';
    } else if (numgrade >= 80.0) {
        return 'B';
    } else if (numgrade >= 70.0) {
        return 'C';
    } else if (numgrade >= 60.0) {
        return 'D';
    } else {
        return 'F';
    }
}

额外说明

  • 注意代码的格式规范,适当换行和缩进能让代码更易读,也能减少这类低级错误
  • 使用scanf读取浮点数时,确保输入的是合法数值,避免运行时错误
  • 如果需要更精细的成绩划分(比如A-、B+这类),可以扩展lettergrade函数的条件判断逻辑

内容的提问来源于stack exchange,提问作者Marcus Gilchrist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:25:13