数组之间求最值,为什么这个找到的最值奇奇怪怪。


#include<iostream>
using namespace std;
int main()
{
    int n,i;
    cin>>n;
    int a[n];
    cin>>a[n];
    int max=a[1],min=a[i];
    for(i=1;i<=n;i++)
    {
        if(a[i]>max)
        {
        
        max=a[i];
    }
        if(a[i]<min)
        {
        
        min=a[i];
    }
        
    }
    cout<<max<<" ";
    cout<<min; 
    
}

C++不允许使用变量来定义数组的长度。int a[n];这么用是错误的。
int max=a[1],min=a[i];这里,i没有初始化,a[i]直接会崩掉的
输入数据的时候 cin>> a[n]这么写是错误的。
代码修改如下,如有帮助,请帮忙采纳一下,谢谢。


#include<iostream>
using namespace std;
int main()
{
    int n,i;
    cin>>n;
    int *a = new int[n]; //a[n]
    //cin>>a[n];
    int max,min;//=a[1],min=a[i];
    for(i=0;i<n;i++)
    {
        cin >> a[i];
        if(i==0)
        {
            max = a[i];
            min = a[i];
        }
        if(a[i]>max)
        {
            max=a[i];
        }
        if(a[i]<min)
        {
            min=a[i];
        }
    }
    cout<<max<<" ";
    cout<<min; 
    //释放空间
    delete[] a;
    a = 0;
    return 0;
}

cin>>a[n];
这么不行,得用循环逐个元素输入
for(int i=0;i<n;i++)
cin>>a[i];
另外下标从0开始
int max=a[1],min=a[i];
改为
int max = a[0],min = a[0];