题目描述
每次期末考试成绩出来之前的一段时间大豪哥心里都是痛苦的,总感觉自己会在班上排名特别差。所以当成绩出来以后大豪哥想快点知道班上的总排名,以便知道自己的排名。(PS:大豪哥班上有个学霸名叫日天,又名泰迪,不要问我为什么,因为泰迪的行为决定的)
输入
多组测试数据,至文件结尾。
先输入每个班上有n个同学,这个学期有m门课程(1<=n,m<=100)
接下来有n行,每行的输入格式为学号id,姓名name,课程成绩k1,课程成绩k2... ,课程成绩km.(学号在int型范围以内,0<=ki<=100,姓名长度在20个字符以下)
输出
输出班上每个同学排名,并输出总分及排名(如果总分相同就按学号从小到大输出,但是排名还是相同的)输出格式见样例
样例输入
4 4
1 Taidi 100 100 90 90
2 Dahaoge 60 60 70 60
3 Yeshen 90 90 100 100
4 Wangpangzi 50 60 100 80
样例输出
1 Taidi 100 100 90 90 Sum = 380 Ranking = 1
3 Yeshen 90 90 100 100 Sum = 380 Ranking = 1
4 Wangpangzi 50 60 100 80 Sum = 290 Ranking = 3
2 Dahaoge 60 60 70 60 Sum = 250 Ranking
第1个回答 2019-01-11
你在加点我帮你写追问
你写了吧,我要用啊
先写一下吧,我还有别的要做
追答还没有,你加的话我现在写,10分钟你就有了
第2个回答 2019-01-11
找计算机二级的培训班吧
第3个回答 2019-01-11
#include<stdio.h>
#include<string.h>
struct Student{
char name[20];
int id;
int score[101];
};
int main(){
Student s[100];
int n,m,i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d%s",&s[i].id,s[i].name);
for(j=0;j<m;j++){
scanf("%d",&s[i].score[j]);
s[i].score[100]+=s[i].score[j];
}
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(s[i].score[100]<s[j].score[100]){
Student tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
if(s[i].score[100]==s[j].score[100]){
if(s[i].id>s[j].id){
Student tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
}
}
int tmp=1;//用于确定排名
for(i=0;i<n;i++){
printf("%d %s ",s[i].id,s[i].name);
for(j=0;j<m;j++){
printf("%d ",s[i].score[j]);
}
printf("Sum=%d ",s[i].score[100]);
if(i==0) printf("Ranking=1\n");
else{
if(s[i].score[100]==s[i-1].score[100]){
//前后两人排名相同就直接输出第一人排名
printf("Ranking=%d\n",tmp);
}
else{
tmp=i+1;//前后两人成绩不同就更新后一人排名
printf("Ranking=%d\n",i+1);
}
}
}
}本回答被网友采纳
#include<string.h>
struct Student{
char name[20];
int id;
int score[101];
};
int main(){
Student s[100];
int n,m,i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d%s",&s[i].id,s[i].name);
for(j=0;j<m;j++){
scanf("%d",&s[i].score[j]);
s[i].score[100]+=s[i].score[j];
}
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(s[i].score[100]<s[j].score[100]){
Student tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
if(s[i].score[100]==s[j].score[100]){
if(s[i].id>s[j].id){
Student tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
}
}
int tmp=1;//用于确定排名
for(i=0;i<n;i++){
printf("%d %s ",s[i].id,s[i].name);
for(j=0;j<m;j++){
printf("%d ",s[i].score[j]);
}
printf("Sum=%d ",s[i].score[100]);
if(i==0) printf("Ranking=1\n");
else{
if(s[i].score[100]==s[i-1].score[100]){
//前后两人排名相同就直接输出第一人排名
printf("Ranking=%d\n",tmp);
}
else{
tmp=i+1;//前后两人成绩不同就更新后一人排名
printf("Ranking=%d\n",i+1);
}
}
}
}本回答被网友采纳
第4个回答 2019-01-11
什么时候要