C语言-数组例题

12

Description
键盘输入10个整数存入数组,找出最大值和最小值,先将最大值与最前面的数交换,再将最小数与最后一个数交换,使得最终最大值在最前,最小值在最后。

说明:输入的数据确保最大值和最小值都只有一个

Input
输入10个整数

Output
输出处理后数组中所有数据

Sample Input
2 4 1 5 8 9 0 4 7 6
Sample Output
9 4 1 5 8 2 6 4 7 0
Code 1 here:

#include <stdio.h>
int main()
{

    int a[10],i,max,min,kmax=0,kmin=0,temp=0,temp2=0;  //kmax和kmin分别用来存储最大、最小数的序号,max和min未必用到
    for(i=0;i<10;i++)
       scanf("%d",&a[i]);
       
         min=max=a[0];
    for(i=0;i<10;i++){
        if(a[i]>max){
            max=a[i];
            kmax = i;
        }
        if(min>a[i]){
            min=a[i];
            kmin = i;
        }
    }
    
if(kmin==0&&kmax==9){
	temp = a[0];
	a[0]=a[9];
	a[9]=temp;
}
 if(kmin==0){
		temp=a[kmin];
		a[kmin]=a[9];
		a[9]=temp;
		
		temp2 = a[kmax];
		a[kmax] = a[0];
		a[0]=temp2;
	}
if(kmax==9){
		temp=a[kmax];
		a[kmax]=a[0];
		a[0]=temp;
		
		temp2 = a[kmin];
		a[kmin] = a[9];
		a[9]=temp2;
	}
	
		if(kmax!=9&&kmin!=0){
		temp = a[kmax];
		a[kmax]=a[0];
		a[0]=temp;
		
		temp2 = a[kmin];
		a[kmin]=a[9];
		a[9]=temp2;
	}
    for(i=0;i<=9;i++)
       printf("%d ",a[i]);
       printf("\n");
    return 0;

}