GitBook

这里写图片描述

想想这一题第一次见时候没写出来…… 这次写得貌似也是有点麻烦

#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]绝对值排序