⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku1520.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define size 1100

char s[size][30];
int n[size], v[size];
int n_size, s_size, ns_pos;

char Change_Char(char x)
{
	if (x >= 'A' && x <= 'Z')
	{
		return x;
	}
	if (x >= 'a' && x <= 'z')
	{
		return x - 32;
	}
	return 0;
}

int cmp_s(const void *a, const void *b)
{
	char *aa = (char *)a;
	char *bb = (char *)b;
	while (Change_Char(*aa) == Change_Char(*bb))
	{
		aa++;
		bb++;
	}
	return Change_Char(*aa) - Change_Char(*bb);
}

int cmp_n(const void *a, const void *b)
{
	return *(int *)a - *(int *)b;
}

void Insert_Num(char *p)
{
	n[n_size] = atoi(p);
	n_size++;
	v[ns_pos++] = 1;
}

void Insert_Char(char *p)
{
	memcpy(s[s_size], p, strlen(p));
	p = s[s_size];
	while (isalpha(*p))
		p++;
	*p = 0;
	s_size++;
	v[ns_pos++] = 0;
}

void Insert(char *p)
{
	if (isalpha(*p))
		Insert_Char(p);
	else
		Insert_Num(p);
}

void OutPut()
{
	int i, p_s, p_n;
	p_n = 0;
	p_s = 0;
	for (i = 0; i < ns_pos; i++)
	{
		if (!v[i])
			printf("%s", s[p_s++]);
		else
			printf("%d", n[p_n++]);
		if (i != ns_pos - 1)
			printf(", ");
		else
			printf(".\n");
	}
}

int main()
{
	char ts[30];
	int i;
	while (1)
	{
		memset(ts, 0, sizeof(ts));
		scanf("%s", ts);
		n_size = 0;
		s_size = 0;
		ns_pos = 0;
		if (ts[0] == '.')
			break;
		if (ts[strlen(ts) - 1] == '.')
		{
			printf("%s\n", ts);
			continue;
		}
		Insert(ts);
		while (1)
		{
			memset(ts, 0, sizeof(ts));
			scanf("%s", ts);
			Insert(ts);
			if (ts[strlen(ts) - 1] == '.')
				break;
		}
		qsort(s, s_size, sizeof(s[0]), cmp_s);
		qsort(n, n_size, sizeof(int), cmp_n);
		OutPut();
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -