#include <stdio.h>
int input(int *book);
void deal(int *book);
void swap(int *a,int *b);
void output(int *book);
int main(){
int book[10];
int cnt;
input(book);
deal(book);
output(book);
}
int input(int *book){
int cnt;
for(cnt=0;cnt<10;cnt++){
scanf("%d",&book[cnt]);
}
}
void deal (int *book){
int cnt,min,max;
min=0,max=9;
for(cnt=0;cnt<10;cnt++){
if(book[cnt]<book[min]){
min=cnt;
}
}
for(cnt=0;cnt<10;cnt++){
if(book[cnt]>book[max]){
max=cnt;
}
}
if(max==0){
swap(&book[min],&book[0]);
swap(&book[min],&book[9]);
return ;
}
swap(&book[min],&book[0]);
swap(&book[max],&book[9]);
}
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void output(int *book){
int cnt;
for(cnt=0;cnt<10;cnt++){
printf("%d ",book[cnt]);
}
}
这个实现的时候最大的问题就是,如果max的位置正好在0的位置,也就是说,max和min可能会在我们要交换到的位置上,即0,和9,那么,在考虑的时候,要分下情况,因为本题我的做法是通过下标来确定最大最小值得位置,所以一旦涉及到改变最大值和最小值位置的变化,我们就需要分出来个情况来解决这个问题
这里我处理的办法就是,因为最大值在经过第一次转化时,被调到了最小值的位置,那么我们只需要将最小值的位置和9