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

如何用循环实现输入多个数字后找出最大值的C语言程序?

解决思路:用单个变量跟踪最大值就行!

嘿,完全不用搞上千个变量来存所有数字——这太没必要了。你只需要两个变量:一个存当前输入的数字,另一个一直记录目前找到的最大值。每次输入新数字后,和这个最大值比一下,如果更大就更新它,根本不用保留所有输入的数字。

我给你修改一下代码,加上详细注释,你一看就懂:

#include <stdio.h>

int main(void) {
    printf("...Find the highest number... (0 to exit)\n\n");
    
    double current_num;    // 存当前输入的数字
    double max_num;        // 跟踪当前的最大值
    int is_first_input = 1; // 标记是否是第一个有效输入(避免初始值出错)
    
    while (1) {
        printf("Enter a number: ");
        scanf("%lf", &current_num);
        
        // 输入0就退出循环
        if (current_num == 0) {
            break;
        }
        
        // 第一个有效数字直接作为初始最大值
        if (is_first_input) {
            max_num = current_num;
            is_first_input = 0; // 标记不再是第一次输入
        } else {
            // 新输入的数字比当前最大值大,就更新最大值
            if (current_num > max_num) {
                max_num = current_num;
            }
        }
    }
    
    // 最后判断用户有没有输入过有效数字,避免输出奇怪的结果
    if (!is_first_input) {
        printf("\nThe highest number you entered is: %.2lf\n", max_num);
    } else {
        printf("\nYou didn't enter any valid numbers!\n");
    }
    
    return 0;
}

关键细节说明:

  • 为什么用is_first_input?:如果直接把max_num初始化为0,那用户输入全是负数的时候,程序会错误地输出0作为最大值。用这个标记可以确保初始最大值是用户输入的第一个有效数字,不管正负都能正确工作。
  • 内存效率:不管用户输入10个还是1000个数字,你只占用两个double变量的内存,完全不会有内存压力。
  • 边界处理:如果用户一开始就输入0,程序会提示“没有输入有效数字”,避免输出无意义的结果。

试一下这个代码,输入任意多数字(最后输0退出),它都会准确输出最大值!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:07:50