C++的交换,不知道自己写的代码到底哪一块错了

问题:大小交换
给定一个长度为N的数列,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。(保证最大和最小值都是唯一的。)

输入描述:

输入在第一行中给出一个正整数N(≤1000),第二行给出N个整数,数字间以空格分隔。

输出描述:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

示例 1:
输入:
5
8 2 5 1 4
输出:
1 2 5 4 8

#include <bits/stdc++.h>
using namespace std; 

int main() {
    // 请补全代码,实现题目功能
    int nums[1001];
    int n;
    int a;
    int b;
    int c;
    int d;
    cin >> n ;
    nums[n];
    for (int i=0; i<n; i++){
         cin >> nums[i];
    }

    for(int i=1; i<n; i++){
        if(nums[i] > nums[i-1] ){
            a = nums[i];
            c = i;
            
        }
        if(nums[i] < nums[i-1] ){
            a = nums[i -1];
            c=i-1;
        
        }
    }  
    nums[c] = nums[-1]; 
    nums[-1] = a;

    for(int i=1; i<n; i++){
        if(nums[i] > nums[i-1] ){
            b = nums[i -1];
            d=i-1;
           
        }
        if(nums[i] < nums[i-1] ){
            b = nums[i];
            d=i;
            
        }
    } 
   
    nums[d] = nums[0];
    nums[0] = b;

    for (int i=0; i< n; i++){
         cout<< nums[i] ;
    }

  

    return 0;
}

```c++



```

求最小值和最大值的逻辑不对啊,需要用临时变量记录最大值和最小值的位置,最后再交换

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