分数100 里面中间一片都没过 大佬可以帮帮看看代码么
查看原帖
分数100 里面中间一片都没过 大佬可以帮帮看看代码么
1435695
Mu_________楼主2024/8/31 22:04
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

//  5  53  11

int weishu(int long long x)
{
	if (x > 9)
		return 1 + weishu(x / 10);
	else
		return 1;
}

int  cmp(const void* e1, const void* e2)
{
	int a = 0, b = 0;
	a=weishu(*(long long*)e1);
	b=weishu(*(long long*)e2);
	int a1 = pow(10, a - 1);
	int b1 = pow(10, b - 1);
		int a2 = ((*(long long*)e1) / (pow(10, a - 1)));
		int b2 = ((*(long long*)e2) / (pow(10, b - 1)));
	if(a2==b2)
		return ((*(long long*)e2) * pow(10, a) + (*(long long*)e1)) - ((*(long long*)e1) * pow(10, b) + (*(long long*)e2));
	else
	{
		if (a == b)
			return (*(long long*)e2) - (*(long long*)e1);
		else if(a>b)
			return ((*(long long*)e2)*pow(10,a-b)) - (*(long long*)e1);
		else
			return (*(long long*)e2) - ((*(long long*)e1)*pow(10,b-a));
	}
	
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int long long arr[20] = { 0 };    
	int i = 0;
	for (i = 0; i <= n - 1; ++i)
		scanf("%lld", &arr[i]);

	qsort(arr, n, sizeof(arr[0]), cmp);  //快速排序  降序
	
	for (i = 0; i <= n - 1; ++i)
	{
		printf("%lld", arr[i]);
	}

	return 0;
}
2024/8/31 22:04
加载中...