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;
}

代码解析:

  1. 头文件: stdio.h 提供了标准输入输出函数,string.h 提供了字符串操作函数。
  2. 宏定义: MAX_NAME_LENGTH 定义了单个姓名的最大长度,MAX_NAMES 定义了存储姓名的数组的最大容量。
  3. 变量定义: names 数组用来存储所有姓名,num_names 记录姓名的数量,name 临时存储输入的姓名,temp 用作排序过程中的临时变量。
  4. 输入姓名: 程序会提示用户输入姓名,直到输入 'end' 为止,并将每个姓名存储到 names 数组中。
  5. 排序: 使用双层循环对 names 数组进行排序,使用 strcmp 函数比较两个姓名,如果第一个姓名在拼音顺序上大于第二个姓名,则交换两个姓名。
  6. 输出结果: 排序完成后,程序会输出按拼音顺序排列的姓名。

注意: 此程序仅适用于汉语拼音,对于其他语言或包含特殊字符的姓名可能无法正确排序。

C语言实现姓名按拼音排序 - 代码示例

原文地址: https://www.cveoy.top/t/topic/jw7g 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录