C语言程序设计:字典序排序字符串
C语言程序设计:字典序排序字符串
问题描述:
对分行输入的若干字符串按字典序(由小到大)进行排序并输出。
输入形式:
控制台输入多行字符串,各个字符串可能含有空格。
输出形式:
输出按字典序(由小到大)进行排序后的字符串。
样例输入:
'hello world' 'apple' 'banana' 'dog' 'egg'
样例输出:
'apple' 'banana' 'dog' 'egg' 'hello world'
样例说明:
输入的字符串按字典序排序后,输出结果如上所示。
代码示例:
#include <stdio.h>
#include <string.h>
int main() {
char str[100][100];
int i, j, n = 0;
// 输入字符串
while (gets(str[n])) {
n++;
}
// 字典序排序
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(str[i], str[j]) > 0) {
char temp[100];
strcpy(temp, str[i]);
strcpy(str[i], str[j]);
strcpy(str[j], temp);
}
}
}
// 输出排序后的字符串
for (i = 0; i < n; i++) {
printf('%s\n', str[i]);
}
return 0;
}
代码解释:
- 使用
gets()函数逐行读取输入字符串,并将它们存储在str数组中。 - 使用双层循环遍历
str数组,并使用strcmp()函数比较两个字符串的字典序。 - 如果
strcmp()函数返回大于 0 的值,则说明两个字符串的字典序不符,需要进行交换。 - 使用
strcpy()函数将两个字符串进行交换。 - 最后,使用
printf()函数输出排序后的字符串。
注意:
- 此代码仅提供一个简单的实现方式,您可以根据实际需求进行修改和优化。
- 使用
gets()函数存在安全隐患,建议使用更安全的函数,例如fgets()。 strcmp()函数比较字符串的大小写,如果需要忽略大小写进行排序,可以使用strcasecmp()函数。- 如果输入字符串数量较大,可以使用更高级的排序算法,例如快速排序或归并排序,以提高排序效率。
原文地址: https://www.cveoy.top/t/topic/omcN 著作权归作者所有。请勿转载和采集!