
1993: C语言实验——最值
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 1541 Solved: 727
[Submit][Status][Web Board]
Description
有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。
Input
输入包括两行。 第一行为正整数n(1≤n≤10)。 第二行为n个正整数组成的序列。
Output
输出转换好的序列。数据之间用空格隔开。
Sample Input
5
2 1 5 4 3
Sample Output
1 2 3 4 5
HINT
Source
本题应注意不是排序,而只是将最小值与第一个数交换,最大值与最后一个数交换。
找到最大值最小值对应数组中的下标,然后通过下标来解决此问题。
#include <stdio.h>
#include <stdlib.h> int main()
{
int i,n,a[10];
int k,max,min;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
min=max=a[0];
k=0;
for(i=0; i<n; i++)
{
if(a[i]<min)
{
min=a[i];
k=i;
}
}
a[k]=a[0];
a[0]=min;
for(i=1; i<n; i++)
{
if(a[i]>max)
{
max=a[i];
k=i;
}
} a[k]=a[n-1];
a[n-1]=max;
for(i=0; i<n; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}