7-1 3个字符串排序(10 分)
输入3个学生的姓名,并按姓名的字母前后顺序升序输出学生名单。
输入格式:
在三行分别输入3个学生的姓名字符串。字符串中不要包含空格、换行符和制表符
输出格式:
按照“输出样例”输出结果,其中的1、2、3是原样输出的整数。
输入样例:
zhangdan
lili
wangming
输出样例:
1:lili
2:wangming
3:zhangdan
题目转自PTA:https://pintia.cn/
AC代码
#include<stdio.h>
#include <string.h>
void sort(char a[], char b[], int n)
{
if (a[n] == '\0' && b[n] == '\0')
{
return;
}
if (a[n] == '\0' && b[n] != '\0')
{
return;
}
if (a[n] != '\0' && b[n] == '\0')
{
char t[50];
strcpy(t, a);
strcpy(a, b);
strcpy(b, t);
return;
}
if (a[n] > b[n])
{
char t[50];
strcpy(t, a);
strcpy(a, b);
strcpy(b, t);
return;
}
if (a[n] == b[n])
{
sort(a, b, n+1);
}
}
int main()
{
char a[3][50];
scanf("%s%s%s", a[0], a[1], a[2]);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2 - i; j++)
{
if (a[j][0] > a[j+1][0])
{
char t[50];
strcpy(t, a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], t);
}
if (a[j][0] == a[j+1][0])
{
sort(a[j], a[j+1], 1);
}
}
}
for (int i = 1; i < 4; i++)
{
printf("%d:%s\n", i, a[i-1]);
}
return 0;
}