精英班10名学生名单进行排序输出

学习了字典序和字符串比较之后,今天让我们来给学生名单进行一下排序。我们知道计算理工学院的每个精英班有 10 名学生,老师会依次给出 10 名学生的名字(均为不含有空格的英文字符串)。你需要将这些名字按照字典序从小到大进行输出。

输入格式
测评机会反复运行你的程序。每次程序运行时,你的程序会被输入 10 行不含有空格的字符串,分别对应十个学生的姓名(字符串长度均大于 0 且小于 20)。

输出格式
输出为 10 行,为排序后的 10 个学生姓名,每个学生姓名单独占一行。

代码实现

#include <stdio.h>
#include <string.h>
char name[10][21] = {0};//定义一个10行21列的二维数组
char temp[21] = {0};//定义一个中间数组,在后面进行大小比较时用来交换值
int main() {
    for (int i = 0; i < 10; i++) {
        scanf("%s", *(name + i));//输入学生的名字
    }
    for (int i = 0; i < 10; i++) {
        for (int j = i + 1; j < 10; j++) {
        	 //比较前一个名字和后一个名字的大小,如果strcmp函数返回值大于0,说明前一个字母序大于后一个,则需要交换位置
             if (strcmp(*(name + i), *(name + j)) > 0) {
                strcpy(temp, *(name + i));//将前一个(大值),放到temp数组里
                strcpy(*(name + i), *(name + j));//将后一个(小值),放到name数组的前一个的位置
                strcpy(*(name + j), temp);//将temp中的大值,放到name数组的后一个位置
             }
        }   
    }
    
    for (int i = 0; i < 10; i++) {
        //此时的name数组已经按照有小到大的顺序排列好了,遍历出来即可
        printf("%s\n", *(name + i));
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值