首先审题,正常情况下,该题可理解为排序问题,但是题中最后一句(其他数不动)则否定了这是个排序问题,我们可以用交换值的方法进行操作。
#include<stdio.h>
main()
{
int a[10],i=0,x=0,y=0,max=0,min=0,t=0; //定义一个数组,以及一系列变量
for(i=0;i<10;i++) //利用for循环,给数组赋值
scanf("%d",&a[i]);
max=min=a[0]; //将最大值最小值都赋予a[0]值
for(i=0;i<10;i++) //继续利用for循环语句判断数组中各值与a[0]的大小
{
if(a[i]>max)
{max=a[i]; x=i;} //若比max大,则将其赋值给max,其数组下标赋值给x
if(a[i]<min)
{min=a[i]; y=i;} //同理,若比min小,则将其赋值给min,其数组下标赋值给y
}
{ t=a[0]; //利用t做中介,将最大值赋值给a[0],即数组的第一位
a[0]=a[x];
a[x]=t;
}
{ t=a[9]; //同理,利用t做中介,将最小值赋值给a[9],即数组最后一位
a[9]=a[y];
a[y]=t;
}
for(i=0;i<10;i++) //最后利用for循环,将变换后的数组,整体输出
printf("%d\t",a[i]) ;
}