C语言实现姓名按拼音排序 - 代码示例
C语言实现姓名按拼音排序 - 代码示例
本文将提供一个使用C语言编写的程序,用于输入姓名并按拼音顺序进行排序。该程序将会使用循环输入姓名,并使用strcmp函数对姓名进行比较,最终按拼音顺序输出姓名。
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 100
#define MAX_NAMES 100
int main() {
char names[MAX_NAMES][MAX_NAME_LENGTH]; // 存储姓名的数组
int num_names = 0; // 姓名数量
char name[MAX_NAME_LENGTH]; // 临时存储输入的姓名
// 输入姓名,直到输入 'end' 为止
printf("请输入姓名(输入 'end' 结束):\n");
while (1) {
scanf("%s", name);
if (strcmp(name, "end") == 0) {
break;
}
strcpy(names[num_names], name);
num_names++;
}
// 按拼音排序
int i, j;
char temp[MAX_NAME_LENGTH];
for (i = 0; i < num_names - 1; i++) {
for (j = 0; j < num_names - 1 - i; j++) {
if (strcmp(names[j], names[j+1]) > 0) {
strcpy(temp, names[j]);
strcpy(names[j], names[j+1]);
strcpy(names[j+1], temp);
}
}
}
// 输出排序后的姓名
printf("按拼音排序后的姓名为:\n");
for (i = 0; i < num_names; i++) {
printf("%s\n", names[i]);
}
return 0;
}
代码解析:
- 头文件:
stdio.h提供了标准输入输出函数,string.h提供了字符串操作函数。 - 宏定义:
MAX_NAME_LENGTH定义了单个姓名的最大长度,MAX_NAMES定义了存储姓名的数组的最大容量。 - 变量定义:
names数组用来存储所有姓名,num_names记录姓名的数量,name临时存储输入的姓名,temp用作排序过程中的临时变量。 - 输入姓名: 程序会提示用户输入姓名,直到输入 'end' 为止,并将每个姓名存储到
names数组中。 - 排序: 使用双层循环对
names数组进行排序,使用strcmp函数比较两个姓名,如果第一个姓名在拼音顺序上大于第二个姓名,则交换两个姓名。 - 输出结果: 排序完成后,程序会输出按拼音顺序排列的姓名。
注意: 此程序仅适用于汉语拼音,对于其他语言或包含特殊字符的姓名可能无法正确排序。
原文地址: https://www.cveoy.top/t/topic/jw7g 著作权归作者所有。请勿转载和采集!