自己做的数列特征,想问一下为什么我的最小值会输出 4 而并不是 -2.

问题遇到的现象和发生背景

输入5
1 3 -2 4 5
输出的最小值是 4

#include<iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int a[n];
    int max=0,min=0,sum=0;
    int t=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
        sum=sum+a[i];
        if(a[i]<t){
            max=t;
            min=a[i];
            t=a[i];
        }
        else{
            max=a[i];
            min=t;
            t=a[i];
        }
    }
    cout<<max<<"\n"<<min<<"\n"<<sum<<"\n";
    return 0;
}

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

代码逻辑不对啊,代码修改如下:

#include<iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int a[n];
    int max=0,min=0,sum=0;
    int t=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(i==0)
        {
            min = a[0];
            max = a[0];
        }
        sum=sum+a[i];
        if(a[i]<min){
            //max=t;
            min=a[i];
            //t=a[i];
        }
        if(a[i] > max)
        {
            max=a[i];
            //min=t;
            //t=a[i];
        }
    }
    cout<<max<<"\n"<<min<<"\n"<<sum<<"\n";
    return 0;
}


代码修改如下:


#include<iostream>
using namespace std;
 
int main(){
    int n;
    cin>>n;
    int a[n];
    int max=-210000,min=210000,sum=0;
    int t=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(i==0)
        {
            min = a[0];
            max = a[0];
        }
        sum=sum+a[i];
        if(a[i]<min){
            //max=t;
            min=a[i];
            //t=a[i];
        }
        if(a[i] > max)
        {
            max=a[i];
            //min=t;
            //t=a[i];
        }
    }
    cout<<max<<"\n"<<min<<"\n"<<sum<<"\n";
    return 0;
}
 
 

希望对题主有帮助!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632