题目描述
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
题目解析
注意交换顺序,先让最小值和第一个数交换,再让最大值和最后一个数交换。
#include<stdio.h>
int main()
{
int N,i,min,max,lim,z;
scanf("%d",&N);
int s[N];
for(i=0;i<N;i++)
{
scanf("%d",&s[i]);
}
min=s[0];
max=s[0];
for(i=1;i<N;i++)
{
if(s[i]>max) max=s[i]; /*找到最大值和最小值*/
if(s[i]<min) min=s[i];
}
for(i=1;i<N;i++)
{
if(s[i]==min)
{
lim=s[0]; /*确定最小值位置并与第一个元素交换*/
s[0]=s[i];
s[i]=lim;
break;
}
}
for(i=1;i<N;i++)
{
if(s[i]==max)
{
lim=s[N-1]; /*找到最大值并与最后一个元素交换*/
s[N-1]=s[i];
s[i]=lim;
}
}
printf("%d",s[0]);
for(i=1;i<N;i++)
{
printf(" %d",s[i]); /*输出*/
}
printf(" ");
return 0;
}