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

求完善:实现循环输入数字并输出最值的C语言程序

修正你的C语言程序:实现多次输入数字并输出最值

先帮你梳理下原代码里的问题,再给出能正常运行的修正版:

原代码的核心问题

  • 变量类型错配:command用来存"yes"/"no"字符串,不能用float,得用字符数组(比如char command[10];)
  • scanf传参遗漏地址符:读取数值时必须传变量地址,比如scanf("%f", &value),你漏了&
  • 数组未被利用:定义了int a[100];但从没把输入的数值存进去,后面找最值的逻辑完全无效
  • 循环逻辑缺失:你只手动写了一次"yes"的重复输入,应该用循环实现多次输入的逻辑,而不是复制代码
  • 未定义变量:n没有声明,程序不知道要遍历数组的多少个元素
  • 头文件缺失:使用strcmp需要包含<string.h>头文件
  • 最值初始化错误:max和min应该在第一次输入数字后就赋值,直接用a[0]会取到随机垃圾值
  • 缓冲区残留问题:输入float后,缓冲区的换行符会被scanf("%s", command)读取,导致指令读取失败

修正后的完整代码

#include <stdio.h>
#include <string.h>

int main() {
    float input_values[100]; // 存储所有输入的数字,最多支持100个
    int input_count = 0;     // 记录实际输入的数字数量
    char user_command[10];   // 存储用户的yes/no指令
    float max_val, min_val;

    // 第一次输入数字并初始化最值
    printf("Please enter the value: ");
    scanf("%f", &input_values[input_count]);
    input_count++;
    max_val = input_values[0];
    min_val = input_values[0];

    // 循环处理后续输入请求
    while (1) {
        // 清空输入缓冲区的残留换行符,避免读取空指令
        while (getchar() != '\n');
        printf("Do you want to continue? (yes/no): ");
        scanf("%s", user_command);

        if (strcmp(user_command, "yes") == 0) {
            printf("Please enter the value: ");
            scanf("%f", &input_values[input_count]);
            // 实时更新最值,不用最后再遍历数组
            if (input_values[input_count] > max_val) {
                max_val = input_values[input_count];
            }
            if (input_values[input_count] < min_val) {
                min_val = input_values[input_count];
            }
            input_count++;
        } else if (strcmp(user_command, "no") == 0) {
            break; // 用户选择退出,跳出循环
        } else {
            printf("Invalid input! Please enter 'yes' or 'no'.\n");
        }
    }

    // 输出最终结果,用%.2f控制小数位数更美观
    printf("The maximum value is %.2f, and the minimum is %.2f\n", max_val, min_val);
    return 0;
}

关键优化点

  • 每次输入新数字后直接更新最值,比最后遍历数组效率更高
  • 加入缓冲区清理逻辑,解决输入切换时的读取异常
  • 增加非法输入提示,提升程序的健壮性
  • 用input_count记录实际输入数量,避免数组空间浪费

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:13:13