题目描述
对于给出的若干个(不超过10个)字符串(每个字符串的长度不超过20),按ASCII的顺序降序排序,然后输出。
输入
测试数据的组数t
第一组测试数据的个数
第一组测试数据的若干个字符串
第二组测试数据的个数
第二组测试数据的若干个字符串
......
输出
第一组数据降序输出
第二组数据降序输出
......
输入输出样例
输入样例
2
3
banana apple orange
4
cat dog fish bird
输出样例
orange banana apple
fish dog cat bird
AC代码
#include<stdio.h>
#include<string.h>
int main()
{
int t, n, i, j;
char a[30][30] = {0}, b[30] = {0};
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%s", a[i]);
// 使用冒泡排序对字符串数组进行降序排序
for(i = 1; i < n; i++)
{
for(j = 0; j < n-i; j++)
{
if(strcmp(a[j], a[j+1]) < 0)
{
strcpy(b, a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], b);
}
}
}
// 输出排序后的字符串数组
for(i = 0; i < n; i++)
{
printf("%s", a[i]);
if(i != n-1)
printf(" ");
else
printf("\n");
}
}
return 0;
}
上述代码是C语言版本的字符串排序程序。程序通过冒泡排序对字符串数组进行降序排序,然后按要求输出排序后的字符串数组。
在主函数中,首先读取测试数据的组数t。然后对于每组测试数据,依次读取该组数据的个数n和若干个字符串,并存储在二维字符数组a中。
接下来使用冒泡排序算法对字符串数组a进行降序排序。通过比较相邻的两个字符串,如果前面的字符串ASCII值较小,则进行交换,直到整个数组排序完成。
最后,按要求输出排序后的字符串数组。遍历数组a,逐个输出字符串,注意在每个字符串之间添加空格,最后一个字符串后不添加空格。
(by 归忆)