📄 pku1520.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 + -