蒟蒻求助,用的是char字符串,本地好像正确,提交0分
查看原帖
蒟蒻求助,用的是char字符串,本地好像正确,提交0分
838007
AAA199821楼主2023/3/22 21:16
#include<iostream>
#include<string.h>
using namespace std;
int cmp(char s1[], int L1, char s2[], int L2)
{
	int result = 0;
	if (L1 == L2)
	{
		result = strcmp(s1,s2);
		return result;
	}
	else if (L1 > L2)
	{
		char* now = new char[L2 + 1];
		char* p, * q;
		p = s1; q = now;
		while (*p != '\0')
		{
			for (int i = 0; i < L2 && *p != '\0'; i++)
			{
				*q = *p;
				q++;
				p++;
			}
			*q = '\0';
			q = now;
			if (strcmp(now,s2) != 0)
			{
				result = strcmp(now,s2);
				return result;
			}
		}
		delete[]now;
	}
	else if (L1 < L2)
	{
		char* now = new char[L1 + 1];
		char* p, * q;
		p = s2; q = now;
		while (*p != '\0')
		{
			for (int i = 0; i < L1 && *p != '\0'; i++)
			{
				*q = *p;
				q++;
				p++;
			}
			*q = '\0';
			q = now;
			if (strcmp(s1,now) != 0)
			{
				result = strcmp(s1,now);
				return result;
			}
		}
		delete[]now;
	}
	return 0;
}
int main()
{
	int n;
	cin >> n;
	int L[21];
	char num[21][10];
	for (int i = 0; i < n; i++)
	{
		cin >> num[i];
		L[i] = strlen(num[i]);
	}
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = 0; j < n - 1; j++)
		{
			if (cmp(num[j], L[j], num[j + 1], L[j + 1]) == -1)
			{
				int t = L[j];
				L[j] = L[j + 1];
				L[j + 1] = t;
				char s[10];
				strcpy(s, num[j]);
				strcpy(num[j], num[j + 1]);
				strcpy(num[j + 1], s);
			}
		}
	}
	for (int i = 0; i < n; i++)
	{
		cout << num[i];
	}
}
2023/3/22 21:16
加载中...