Lemon156
望采纳
#include<stdio.h>
int main(){
int g,i,k,l,m,n,temp;//g存储最大值的下标,l存储最小值的下标
int a[20];//定义数组最多存放20个元素
printf("input n : ");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
if(i==0){
m=a[i];
l=i;
k=a[i];
g=i;
}
if(a[i]>m){
m=a[i];
g=i;
}
if(a[i]<k){
k=a[i];
l=i;
}
}
temp=a[0];
a[0]=a[l]; //最小值与第一个元素交换
a[l]=temp;
temp=a[n-1];
a[n-1]=a[g]; //最大值与最后一个元素交换
a[g]=temp;
printf("排序后:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
Lemon156
只需加个判断就可以了#include<stdio.h>
int main(){
int g,i,k,l,m,n,temp;//g存储最大值的下标,l存储最小值的下标
int a[20];//定义数组最多存放20个元素
printf("input n (2~20) : ");
scanf("%d",&n);
if(n<2||n>20){
printf("输入错误\n请输入n为2~20之间的数!!!\n"); //判断是否是输入2~20之间的数,不是则退出
return 0;
}
for(i=0;i<n;i++){
scanf("%d",&a[i]); //存储输入的数
}
if(n==2){ //如果是输入两个数,只需进行排序
if(a[1]>a[0]){
printf("%d %d\n",a[0],a[1]);
}
else{
printf("%d %d\n",a[1],a[0]);
}
}
else{ //当n>2时
for(i=0;i<n;i++){
if(i==0){
m=a[i];
l=i;
k=a[i];
g=i;
}
if(a[i]>m){
m=a[i];
g=i;
}
if(a[i]<k){
k=a[i];
l=i;
}
}
temp=a[0];
a[0]=a[l]; //最小值与第一个元素交换
a[l]=temp;
temp=a[n-1];
a[n-1]=a[g]; //最大值与最后一个元素交换
a[g]=temp;
printf("排序后:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}