1993: C语言实验——最值
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 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; }