对院士名单按英文名称进行字典次序排序

问题描述

2019年11月22日,中国科学院、中国工程院公布了2019年两院院士增选结果。共选举产生64名科学院院士和75名工程院院士、20名外籍科学院院士和29名外籍工程院院士。其中来自航空航天领域的新科学院院士有2名,分别是李东旭(女)和祝学军(女)。新工程院院士共8人,分别是曹喜滨、向锦武、肖龙旭、朱广生、魏毅寅、宫声凯、曹建国、李贤玉(女)。请输入某两位院士的英文名称,按照字典次序进行排列并输出排列结果。

【要求】不允许使用字符串库函数,否则不得分。

【输入形式】输入两个院士英文名称,中间用空格隔开,英文名称中不包含空格

【输出形式】排序后的两个院士英文名称,中间用空格隔开

【样例输入】lidongxu zhuxuejun

【样例输出】lidongxu zhuxuejun

【样例输入】caoxibin caojianguo

【样例输出】caojianguo caoxibin

案例代码

以下是一个用C语言编写的程序,根据输入的两个院士英文名称按照字典次序进行排序并输出排列结果。

#include <stdio.h>

void swap(char *str1, char *str2) {
    char temp[30];
    strcpy(temp, str1);
    strcpy(str1, str2);
    strcpy(str2, temp);
}

int compare(char *str1, char *str2) {
    int i = 0;
    while (str1[i] != '\0' && str2[i] != '\0') {
        if (str1[i] < str2[i])
            return -1;
        else if (str1[i] > str2[i])
            return 1;
        i++;
    }
    if (str1[i] == '\0' && str2[i] == '\0')
        return 0;
    else if (str1[i] == '\0')
        return -1;
    else
        return 1;
}

void sort(char *name1, char *name2) {
    if (compare(name1, name2) > 0)
        swap(name1, name2);
}

int main() {
    char name1[30], name2[30];

    printf("请输入两个院士英文名称(中间用空格隔开):");
    scanf("%s %s", name1, name2);

    sort(name1, name2);

    printf("排序后的两个院士英文名称为:%s %s\n", name1, name2);

    return 0;
}

这段程序首先要求用户输入两个院士英文名称,中间用空格隔开,并存储在name1和name2数组中。然后使用compare函数比较两个字符串的字典顺序,如果name1大于name2,则调用swap函数交换它们的位置。最后输出排序后的两个院士英文名称。

在线运行截图

图片[1]-对院士名单按英文名称进行字典次序排序-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享