7-7 交换最小值和最大值 (15分)
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5 8 2 5 1 4
输出样例:
1 2 5 4 8
#include<stdio.h>
void swap(int *a,int *b)//交换函数
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int n;
scanf("%d",&n);
int arr[n];
for(int i=0; i<n; i++)
{
scanf("%d",&arr[i]);
}
int max=0,min=0;
for(int k=0;k<n;k++)//依次比较找出最大值和最小值
{
if(arr[k]>arr[max])
{
max = k;
}
if(arr[k]<arr[min])
{
min = k;
}
}
if(min != 0 && max!=0)//排除最大值在第一位的情况
{
swap(&arr[min],&arr[0]);
}
else
{
swap(&arr[min],&arr[0]);
max = min;//最大值在第一位时 交换顺序后 最大值的位置改变
}
if(max != n-1)
{
swap(&arr[max],&arr[n-1]);
}
for(int i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}