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

C语言整数序列最值程序编译报错:else后缺分号,求助排查修正

错误排查与修正

核心错误原因

你遇到的编译错误,根源是else语句的语法误用:
代码里的else(nombre < min)是非法写法——else本身不能附带判断条件,要实现“否则当满足某条件时执行”的逻辑,必须使用else if(条件)的语法。编译器会把(nombre < min)解析成一个独立的表达式,误以为你在else块里写了这个表达式却没加结束分号,因此抛出“缺失分号”的错误。

其他需要修正的问题

  • void main不符合C语言标准,标准main函数的返回类型必须是int
  • printf中的换行直接写换行符会导致编译失败,要使用转义字符\n
  • 引入了未使用的头文件stdlib.h和math.h,可以移除

修正后的代码

#include <stdio.h>

int main() {
    int max, min, nombre;

    printf("entrez un entier\n");
    scanf("%d", &nombre);
    max = min = nombre;

    while (nombre != 0) {
        if (nombre > max) {
            max = nombre;
        } else if (nombre < min) { // 修正为else if语法
            min = nombre;
        }
        printf("entrez un entier\n");
        scanf("%d", &nombre);
    }

    printf("le max est %d et le min est %d\n", max, min);
    return 0; // 标准main函数需要返回值
}

额外说明

  • 程序逻辑符合题目要求:仅记录当前最大、最小值,无需存储所有输入值
  • 输入0时循环终止,输出最终结果
  • 确保第一个输入为非0整数后才进入循环,满足“至少一个整数”的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:35:17