實在是有點困擾。。
c語言交換排序的問題?
慕粉1474272606
2016-11-15 20:40:31
TA貢獻91條經(jīng)驗 獲得超32個贊
望采納 #include<stdio.h> int?main(){ int?g,i,k,l,m,n,temp;//g存儲最大值的下標,l存儲最小值的下標 int?a[20];//定義數(shù)組最多存放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; }
TA貢獻91條經(jīng)驗 獲得超32個贊
只需加個判斷就可以了
#include<stdio.h> int?main(){ ????int?g,i,k,l,m,n,temp;//g存儲最大值的下標,l存儲最小值的下標 ????int?a[20];//定義數(shù)組最多存放20個元素 ????printf("input?n?(2~20)?:???"); ????scanf("%d",&n); if(n<2||n>20){ printf("輸入錯誤\n請輸入n為2~20之間的數(shù)!??!\n");??//判斷是否是輸入2~20之間的數(shù),不是則退出 return?0; } ????for(i=0;i<n;i++){ ????????scanf("%d",&a[i]);??//存儲輸入的數(shù) ????} if(n==2){ //如果是輸入兩個數(shù),只需進行排序 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; }
舉報