用C语言写,对分行输入的若干字符串按字典序(由小到大)进行排序并输出
时间: 2024-02-27 09:59:09 浏览: 101
好的,这里是一个用C语言实现对分行输入的若干字符串按字典序(由小到大)进行排序并输出的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NUM_STRINGS 100 //最多输入的字符串数量
#define MAX_STRING_LEN 100 //每个字符串最大的长度
void sort_strings(char** strings, int num_strings);
int main()
{
char* strings[MAX_NUM_STRINGS];
char buffer[MAX_STRING_LEN];
int num_strings = 0;
//循环读取每一行输入,直到到达文件末尾
while(fgets(buffer, MAX_STRING_LEN, stdin) != NULL)
{
//去除换行符
buffer[strcspn(buffer, "\n")] = '\0';
//为该字符串分配内存并复制到新的地址
strings[num_strings] = malloc(strlen(buffer) + 1);
strcpy(strings[num_strings], buffer);
num_strings++;
}
//对输入的字符串按字典序进行排序
sort_strings(strings, num_strings);
//输出排序后的结果
for(int i = 0; i < num_strings; i++)
{
printf("%s\n", strings[i]);
free(strings[i]); //释放该字符串的内存
}
return 0;
}
void sort_strings(char** strings, int num_strings)
{
//使用冒泡排序算法对字符串进行排序
for(int i = 0; i < num_strings - 1; i++)
{
for(int j = 0; j < num_strings - i - 1; j++)
{
if(strcmp(strings[j], strings[j + 1]) > 0)
{
//如果前一个字符串比后一个字符串大,则交换它们的位置
char* temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
}
```
该程序可以从标准输入中读取多行字符串,并将它们按字典序排序后输出。您可以在控制台中输入多行字符串,以Ctrl+D(在Unix系统中)或Ctrl+Z(在Windows系统中)来结束输入。