实在是有点困扰。。
3 回答
已采纳
Lemon156
TA贡献91条经验 获得超32个赞
望采纳 #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
TA贡献91条经验 获得超32个赞
只需加个判断就可以了
#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; }
- 3 回答
- 0 关注
- 1310 浏览
添加回答
举报
0/150
提交
取消