元宵节晚会上,参加节目表演的同学需要抽签决定出场顺序,序号小的同学先出场,现在已知n(0<n<100)位同学的姓名和抽到的号码(无重复),请将同学们的姓名,按照出场次序输出。
输入描述
输入:第一行为一个数字n,表示班上有n名同学的信息。
接下来有n行,每行包括同学的姓名和出场号,以空格隔开。
输出描述
输出:n行,每行表示一个按照出场号排好的同学姓名。
注:假设班上无同名的学生。
c语言代码c语言代码
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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函数根据出场号对学生进行排序。最后按顺序输出学生的姓名和出场号。解决 无用评论 打赏 举报 编辑记录