7-3 交换最小值和最大值
分数 15
全屏浏览题目
切换布局
作者 C课程组
单位 浙江大学
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
参考答案
#include<stdio.h>
int main()
{
int n,m,t,i,j,min,max;
int group[40];
scanf("%d\n",&n);
for(int i = 0;i<n;i++){
scanf("%d ",&group[i]);
}
if(n == 1);//n = 1时不做处理,防止出bug
else if(n == 2){
int max = group[0];
if(group[1] < group[0]){
t = group[0];
group[0] = group[1];
group[1] = t;//n = 2时简化流程,防止出bug
}
}
else{
min = group[0];//初始化为第一个数
for(i = 1;i<n;i++){
if(group[i] < min){
min = group[i];
m = i;
}
}
group[m] = group[0];//原先最小的位置放第一位
group[0] = min;//第一位放最小的数
max = group[0];//初始化为第一个数
for(j = 1;j<n;j++){
if(group[j] > max){
max = group[j];
t = j;
}
}
group[t] = group[n-1];//原先最大的位置放最后一位的数字
group[n-1] = max;//最大放最后位
}
for(int x = 0;x<n; x++){
printf("%d ",group[x]);
}
return 0;
}