c++数组换位
问题:大小交换
给定一个长度为N的数列,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。(保证最大和最小值都是唯一的。)
输入描述:
输入在第一行中给出一个正整数N(≤1000),第二行给出N个整数,数字间以空格分隔。
输出描述:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
示例 1:
输入:
5
8 2 5 1 4
输出:
1 2 5 4 8
https://ask.csdn.net/questions/7697785?answer=53764898&username=weixin_51948279
#include
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] << " ";elsecout << nums[i];}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
