# 换位c++数组

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/22405.html | 发布：2023-07-25 | 更新：2023-07-25 | 分类：建站教程

例题：

 

大小交换

 

给定一个长度为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;  
   
 cin >> n;  
 //nums[n];  
 for (int i = 0; i < n; i++) {  
 cin >> nums[i];  
 }  
 //用a记录最小值的下表，b记录最大值的下表  
 a = 0; b = 0;  
 for (int i = 0; i < n; i++)  
 {  
 if (nums[i] > nums[b]) b = i; //记录最大值的下标  
 if (nums[i] < nums[a]) a = i; //记录最小值的下标  
 }  
   
   
   
   
 //将最小值与第一个交换位置  
 int t = nums[0];  
 nums[0] = nums[a];  
 nums[a] = t;  
   
 //判断最大值是否再第一个位置  
 if (b == 0)  
 b = a; //最大值变成a所在的位置  
   
 //将最大值与最后一个交换位置  
 t = nums[b];  
 nums[b] = nums[n - 1];  
 nums[n - 1] = t;  
 //输出交换后的序列  
 for (int i = 0; i < n; i++) {  
 if (i < n - 1)  
 cout << nums[i] << " ";  
 else  
 cout << nums[i];  
 }  
   
   
   
 return 0;  
}

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
