做网站没有必须要ftp吗,网页游戏平台模板,编程自学免费网站,win7 ftp编辑wordpress题目
某学校举行运动会,学生们按编号(1、2、3.....n)进行标识, 现需要按照身高由低到高排列#xff0c; 对身高相同的人#xff0c;按体重由轻到重排列#xff0c; 对于身高体重都相同的人#xff0c;维持原有的编号顺序关系。 请输出排列后的学生编号
输入
两个序列 对身高相同的人按体重由轻到重排列 对于身高体重都相同的人维持原有的编号顺序关系。 请输出排列后的学生编号
输入
两个序列每个序列由N个正整数组成(0 n 100)。 第一个序列中的数值代表身高第二个序列中的数值代表体重。
输出
排列结果每个数据都是原始序列中的学生编号编号从1开始。
示例一
输入
4
100 100 120 130
40 30 60 50输出
2 1 3 4示例一
输入
3
90 110 90
45 60 45输出
1 3 2代码
#include stdio.h
#include stdlib.h
typedef struct {int id; // 学生编号int height; // 学生身高int weight; // 学生体重
} Student;// 定义比较函数用于qsort排序。根据题目要求先按身高由低到高排序
// 身高相同时按体重由轻到重排序体重再相同时维持原有的编号顺序关系。
int cmp(const void *a, const void *b) {Student *s1 (Student *)a;Student *s2 (Student *)b;// 比较身高若身高不同则按照身高大小返回结果if (s1-height ! s2-height) {return s1-height - s2-height;}// 身高相同的情况下比较体重若体重不同则按照体重大小返回结果else if ((s1-height s2-height) (s1-weight ! s2-weight)) {return s1-weight - s2-weight;}// 当身高和体重都相同时保持原始编号顺序即按照id从小到大排序else {return s1-id - s2-id;}
}int main() {int n; // 学生人数scanf(%d, n); // 读取学生人数// 初始化学生结构体数组Student stu[100];for (int i 0; i n; i) {stu[i].id i 1; // 学生编号从1开始scanf(%d, stu[i].height); // 读取学生的身高信息}// 读取学生的体重信息for (int i 0; i n; i) {scanf(%d, stu[i].weight);}// 使用qsort进行排序传入学生结构体数组、学生数量、单个元素大小及比较函数qsort(stu, n, sizeof(Student), cmp);// 输出排序后学生的编号for (int i 0; i n; i) {printf(%d , stu[i].id);}return 0;
}