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

C++输入数组求最大最小值输出异常值问题排查

异常问题原因分析

导致你代码运行结果异常的核心原因有两个:

  • 输入元素未存入目标数组
    你第一段异常代码的输入循环中,仅将用户输入的值存入了临时变量a,完全没有赋值给array[i]。你声明的array数组从未被初始化,存储的是栈内存中的随机垃圾值,因此最终遍历计算的最大最小值都是无意义的随机数,和你输入的数值无关。
  • 使用了非标准C++语法
    C++标准不支持int array[n]这种用变量定义栈数组长度的写法(即可变长度数组VLA),这只是部分编译器(如GCC)提供的非标准扩展,可移植性极差。

你提供的第二段参考代码可以正常运行,是因为数组在声明时就显式初始化了所有元素,不存在未初始化读的问题,所以计算结果符合预期。


修正后的代码示例

#include<iostream>
#include<vector> // 推荐使用标准库容器替代可变长度数组
using namespace std;
int main()
{
    int n;
    cout<<"input length of array = ";
    cin>>n;
    vector<int> array(n); // 用vector实现动态长度数组,符合C++标准
    for(int i=0; i<n;i++)
    {
        cout<<"input element "<<i+1<<" = ";
        cin>>array[i]; // 直接将输入值存入数组对应位置
    }
    int max=array[0];
    int min=array[0];
    for(int i=0; i<n;i++)
    {
        if(array[i]>max)
        {
            max=array[i];
        }
        if(array[i]<min)
        {
            min=array[i];
        }
    }
    cout<<"max = "<<max<<endl;
    cout<<"min = "<<min;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:48:03