Problem E: 最大数与数列最后一个数交换
分析
先确定最大数的下表,然后交换数值。
Description
输入一个正整数n( 1 < n < 100),再输入n个整数,将最后一个数与数列最大数交换位置(若最大数在数列最后,就不用交换),输出交换后的n个数。
Input
先输入一个正整数n,再输入n个整数
Output
输出交换后的数列(即最大数在数列最后位置)
Sample Input
5 3 5 2 8 1
9 88 33 55 99 44 66 77 22 11
Sample Output
3 5 2 1 8
88 33 55 11 44 66 77 22 99
#include<stdio.h>
int main(void)
{
int n,a[100],i,max,m;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=0;
for(i=1;i<n;i++)
{
if(a[max]<a[i])
max=i;
}
m=a[max];
a[max]=a[n-1];
a[n-1]=m;
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
总结
1、确定最大数的下表是关键。
2、数组最大的优势是每个数字的位置可以明确描述。