这个题的思路在于根据每个数的绝对值去做排序,而实际交换的是原来的数。 #include<stdio.h> #include <malloc.h> void sort(int *a,int len){ for(int i=0;i<len;i++){ for(int j=i;j<len;j++){ if(abs(a[i]) > abs(a[j])){ a[i] = a[i]+a[j]; a[j] = a[i] - a[j]; a[i] = a[i] - a[j]; } } } } int main(){ int n; while(scanf("%d",&n)!= EOF && n != 0){ int *p = malloc(sizeof(int)*n); for(int i=0;i<n;i++){ scanf("%d",p+i); } sort(p,n); for(int i=n-1;i>=0;i--){ printf("%d",*(p+i)); if(i == 0){ printf("\n"); }else{ printf(" "); } } free(p); } }
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交