c语言实验题 最值
描述
有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。
输入
输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个整数组成的序列。
输出
输出转换好的序列。数据之间用空格隔开。
结果保证唯一。
思路很简单,找到数组中的最大值跟最小值的下表记录,在最后按要求进行交换,但是不要忘记数组中的最大值跟最小值会出现在数组首位或者数组末尾,也就是最大值与最小值的位置出现在要求交换的位置。
#include <stdio.h>
int main()
{
int arr[10], n, i;
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d", &arr[i]);
}
int max=0;
int min=0;
for(i=0;i<n;i++)
{
max=arr[max]<arr[i]?i:max;
min=arr[min]>arr[i]?i:min;
}
int temp;
temp=arr[0];
arr[0]=arr[min];
arr[min]=temp;
if(max==0) max=min; //不要忘记最大值在数组首位的情况
temp=arr[n-1];
arr[n-1]=arr[max];
arr[max]=temp;
for(i=0;i<n;i++)
{
printf("%d", arr[i]);
if(i<n-1)
printf(" ");
}
return 0;
}