想想这一题第一次见时候没写出来……
这次写得貌似也是有点麻烦
#include<stdio.h>
#include<algorithm>
using namespace std;
struct numm {
int m,flag;
} a[120];
bool vs(numm A,numm B) {
return A.m>B.m;
}
int main() {
int n;
while(scanf("%d",&n),n) {
for(int i=0; i<n; i++) {
scanf("%d",&a[i].m);
if(a[i].m<0) {
a[i].flag=1;
a[i].m=-a[i].m;
} else
a[i].flag=0;
}
sort(a,a+n,vs);
for(int i=0; i<n; i++) {
if(a[i].flag)
printf("-");
printf("%d",a[i].m);
if(i<n-1)
printf(" ");
}
printf("\n");
}
return 0;
}
20160404补充:
调用sort并自定义绝对值比较函数
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b) {
return abs(a)>abs(b);
}
int main() {
int n;
int a[120];
while(scanf("%d",&n),n) {
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
sort(a,a+n,cmp);
for(int i=0; i<n; i++) {
printf("%d",a[i]);
if(i==n-1)
printf("\n");
else
printf(" ");
}
}
return 0;
}
题目地址:【杭电】[2020]绝对值排序