w233_11 2024-07-28 14:11 采纳率: 0%
浏览 2

c语言代码c语言代码

元宵节晚会上,参加节目表演的同学需要抽签决定出场顺序,序号小的同学先出场,现在已知n(0<n<100)位同学的姓名和抽到的号码(无重复),请将同学们的姓名,按照出场次序输出。
输入描述
输入:第一行为一个数字n,表示班上有n名同学的信息。
接下来有n行,每行包括同学的姓名和出场号,以空格隔开。
输出描述
输出:n行,每行表示一个按照出场号排好的同学姓名。
注:假设班上无同名的学生。

  • 写回答

1条回答 默认 最新

  • 专家-司宇[在线] 2024-07-28 14:11
    关注

    引自免费微信小程序:皆我百晓生

    为了解决这个问题,我们可以使用一个简单的结构体数组来存储学生的姓名和出场号,然后根据出场号进行排序。以下是使用C语言实现的代码:

    #include <stdio.h>
    #include <string.h>
    
    // 定义学生结构体
    typedef struct Student {
        char name[50];  // 学生姓名
        int order;      // 出场号
    } Student;
    
    // 比较函数,用于qsort排序
    int compare(const void *a, const void *b) {
        Student *studentA = (Student *)a;
        Student *studentB = (Student *)b;
        return studentA->order - studentB->order;  // 按照出场号从小到大排序
    }
    
    int main() {
        int n;  // 学生数量
        scanf("%d", &n);  // 读取学生数量
        Student students[n];  // 创建学生数组,用于存储学生信息
    
        // 读取每个学生的姓名和出场号
        for (int i = 0; i < n; i++) {
            scanf("%s %d", students[i].name, &students[i].order);  // 输入学生的姓名和出场号
        }
    
        // 使用qsort函数进行排序,根据出场号从小到大排序学生数组
        qsort(students, n, sizeof(Student), compare);  // 使用自定义的比较函数进行排序
    
        // 输出排序后的学生姓名和出场号
        for (int i = 0; i < n; i++) {
            printf("%s %d\n", students[i].name, students[i].order);  // 按顺序输出学生的姓名和出场号
        }
    
        return 0;
    }
    

    这段代码首先定义了一个结构体Student来存储学生的姓名和出场号。然后使用scanf函数从输入中读取学生数量和每个学生的信息。接着使用qsort函数根据出场号对学生进行排序。最后按顺序输出学生的姓名和出场号。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月28日