python用一维数组存储学号和成绩、然后按成绩排序输出_排序与查找

1.排序

KY210 排序

题目描述

对输入的n个数进行排序并输出。

输入描述:

输入的第一行包括一个整数n(1<=n<=100)。

下来的一行包括n个整数。

输出描述:

可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。

每组测试数据的结果占一行。

输入

4

1 4 3 2

输出

1 2 3 4

代码

#include

#include

#include

using namespace std;

const int MAXN = 100;

int arr[MAXN];

int main(){

int n;

while (scanf("%d", &n) != EOF){

for(int i = 0; i < n; ++i){

scanf("%d", &arr[i]);

}

sort(arr,arr+n);

for (int i = 0; i < n; ++i) {

printf("%d", arr[i]);

}

printf("\n");

}

return 0;

}

KY9 成绩排序

题目描述

用一维数组存储学号和成绩,然后,按成绩排序输出。

输入描述:

输入第一行包括一个整数N(1<=N<=100),代表学生的个数。

接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。

输出描述:

按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。

如果学生的成绩相同,则按照学号的大小进行从小到大排序。

输入

3

1 90

2 87

3 92

输出

2 87

1 90

3 92

代码

#include

#include

#include

using namespace std;

struct Student{

int number;

int score;

};

const int MAXN = 100;

Student arr[MAXN];

//按照学号升序和成绩升序的比较函数

bool Compare(Student x, Student y){

if(x.score == y.score){

return x.number < y.number;

} else {

return x.score < y.score;

}

}

int main(){

int n;

scanf("%d",&n);

for(int i = 0; i < n; ++i){

scanf("%d%d", &arr[i].number, &arr[i].score);

}

sort(arr,arr+n,Compare);

for(int i = 0; i < n; ++i){

printf("%d %d\n", arr[i].number, arr[i].score);

}

return 0;

}

KY2 成绩排序

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩

都按先录入排列在前的规则处理。

示例:

jack 70

peter 96

Tom 70

smith 67

从高到低 成绩

peter 96

jack 70

Tom 70

smith 67

从低到高

smith 67

jack 70

Tom 70

peter 96

输入描述:

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。

输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

输入

3

0

fang 90

yang 50

ning 70

输出

fang 90

ning 70

yang 50

代码

#include

#include

#include

using namespace std;

struct Student{

string name;

int score;

int order;

};

bool CompareDescending(Student x, Student y){

if(x.score == y.score){

return x.order < y.order;

}else{

return x.score > y.score;

}

}

bool CompareAscending(Student x, Student y){

if(x.score == y.score){

return x.order < y.order;

}else{

return x.score < y.score;

}

}

int main() {

int n;

int type;

while (scanf("%d%d",&n,&type)!= EOF) {

Student stu[n];

for (int i = 0; i < n; i++) {

cin >> stu[i].name >> stu[i].score;

stu[i].order = i;

}

if (type) {

sort(stu,stu+n,CompareAscendi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值