编写C语言程序,实现的功能是:假设有20个姓名拼音,将姓名按照首字母升序排序
时间: 2024-03-07 17:47:01 浏览: 19
好的,我已经记录下了你的要求。关于你的问题,以下是示例程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 20 // 姓名数量的最大值
#define MAX_NAME_LEN 20 // 姓名最大长度
// 交换两个字符串
void swap(char *str1, char *str2)
{
char temp[MAX_NAME_LEN];
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
// 对姓名数组进行排序
void sort_names(char names[][MAX_NAME_LEN], int n)
{
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(names[i], names[j]) > 0) {
swap(names[i], names[j]);
}
}
}
}
int main()
{
char names[MAX_N][MAX_NAME_LEN] = {"zhangsan", "lisi", "wangwu", "zhaoliu", "liuda", "chenqi",
"zhangli", "liming", "wangyue", "yangming", "liqi", "zhangming",
"wanglei", "liangyong", "sunjie", "zhaozhe", "luojie", "liuyan",
"zhouxing", "wangfei"};
int i;
sort_names(names, MAX_N);
printf("排序后的姓名列表:\n");
for (i = 0; i < MAX_N; i++) {
printf("%s\n", names[i]);
}
return 0;
}
```
这个程序定义了一个 `swap` 函数,用于交换两个字符串。然后定义了一个 `sort_names` 函数,用于对姓名数组进行排序。排序使用了简单的选择排序算法,按照字符串的大小比较进行排序。最后,在 `main` 函数中初始化了一个姓名数组,并将其传入 `sort_names` 函数进行排序,最后输出排序结果。