早教吧作业答案频道 -->其他-->
C语言奖学金某学校获得一笔企业资助,打算拿出一部分为成绩优秀的前5名学生发放奖学金。期末,每名学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两名学生成
题目详情
C语言奖学金
某学校获得一笔企业资助,打算拿出一部分为成绩优秀的前5名学生发放奖学金。期末,每名学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两名学生成绩相同,再按语文成绩从高到低排序;如果两名学生总分和语文成绩都相同,那么规定学号小的学生排在前面。这样,每名学生的排序是唯一确定的。
l 任务要求
先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。例如,在某个正确答案中,如果前两行的输出数据是:
7 279
5 279
则这两行数据的含义是:总分最高的两位同学的学号依次是7号、5号。这两名同学总分相同,但学号为7的学生语文成绩高一些。如果前两行的输出数据是:
5 279
7 279
则按输出错误处理。
l 输入要求
输入共有n+1行。第1行是一个正整数,表示该校参加评选的学生人数。第2到n+1行,每行有3个数字,用空格隔开,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1到n。
l 输出要求
输出共5行,每行是两个正整数,用空格隔开,依次表示前5名学生的学号和总分。
某学校获得一笔企业资助,打算拿出一部分为成绩优秀的前5名学生发放奖学金。期末,每名学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两名学生成绩相同,再按语文成绩从高到低排序;如果两名学生总分和语文成绩都相同,那么规定学号小的学生排在前面。这样,每名学生的排序是唯一确定的。
l 任务要求
先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。例如,在某个正确答案中,如果前两行的输出数据是:
7 279
5 279
则这两行数据的含义是:总分最高的两位同学的学号依次是7号、5号。这两名同学总分相同,但学号为7的学生语文成绩高一些。如果前两行的输出数据是:
5 279
7 279
则按输出错误处理。
l 输入要求
输入共有n+1行。第1行是一个正整数,表示该校参加评选的学生人数。第2到n+1行,每行有3个数字,用空格隔开,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1到n。
l 输出要求
输出共5行,每行是两个正整数,用空格隔开,依次表示前5名学生的学号和总分。
▼优质解答
答案和解析
#include
#include
typedef struct Student{
int snum;
char score[10];
int sum;
}Student;
int main(){
int n;
scanf("%d",&n);
Student a[128];
int i,j;
for(i=0;i a[i].snum = i+1;
a[i].sum = 0;
for(j=0;j<3;j++){
scanf("%d",&a[i].score[j]);
a[i].sum += a[i].score[j];
}
}
Student tmp;
for(j=n-1;j>0;j--){
for(i=0;i if(a[i].sum < a[i+1].sum){
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
else if(a[i].sum==a[i+1].sum){
if(a[i].score[0] < a[i+1].score[0]){
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
}
}
for(i=0;i<5;i++){
printf("%d %d\n",a[i].snum,a[i].sum);
}
system("pause");
return 0;
}
#include
typedef struct Student{
int snum;
char score[10];
int sum;
}Student;
int main(){
int n;
scanf("%d",&n);
Student a[128];
int i,j;
for(i=0;i
a[i].sum = 0;
for(j=0;j<3;j++){
scanf("%d",&a[i].score[j]);
a[i].sum += a[i].score[j];
}
}
Student tmp;
for(j=n-1;j>0;j--){
for(i=0;i
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
else if(a[i].sum==a[i+1].sum){
if(a[i].score[0] < a[i+1].score[0]){
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
}
}
for(i=0;i<5;i++){
printf("%d %d\n",a[i].snum,a[i].sum);
}
system("pause");
return 0;
}
看了 C语言奖学金某学校获得一笔企...的网友还看了以下:
(2011•眉山)下列是某化学学习小组在“人吸入的空气和呼出的气体中有什么不同”的探究活动中提出的一 2020-03-30 …
最短的词(小学学过的)我是一名小学生,人比较懒,能否帮我出出主意,想一想什么词才是我学过的最短的我 2020-05-13 …
生物信息学中用Ncbi得出的相对分子质量的单位是什么?如何进行换算我在生物信息学部分用Ncbi得出 2020-06-09 …
实验是化学学习的一种重要手段,如利用电解水实验可探究水的组成.请根据电解水实验回答下列问题:(1) 2020-07-15 …
找出错别字随着科学技术的综合化、整体化及人文科学相互渗透、融和的趋势加速,时随着科学技术的综合化、 2020-07-25 …
怎么在计算机中打出数学式中的除号(横线的那种),怎么打出幂数指数和根号(根号开方的指数),微分的上 2020-07-29 …
春秋战国时期某显学学派提出:“名不可简而成也,誉不可巧而立也,君子以身戴行者也”。这一学派()A.后 2020-11-03 …
上体育课时,老师在运动场上教同学们学习掷铅球,训练时,李力同学掷出的铅球在场地上砸出了一个坑口直径约 2020-11-10 …
1、某小学学生的年龄最大为13岁,最小为6岁,至少需从中挑选多少位同学,就一定能使挑出的同学中有两位 2020-11-15 …
张教授说:“与十年前相比,进入大学学习的运动员对学习更感兴趣.因为在我的那些是运动员的学生中,越来越 2020-11-28 …