传智专修学院的“Java程序设计”班有 N(1≤100)N(1 \le 100)N(1≤100) 个学生,知道他们的个人信息和成绩:
由于期末考试有点难,为了让分数没那么难看,将期末考试成绩进行调分,调分后的期末成绩是将其开根号(sqrt)后乘 101010,然后向上取整。
最后这个同学的总评得分是 60% 的调分后期末考试成绩,加上 40% 的平时分成绩,四舍五入精确到整数。
请对这些同学的成绩进行排名。
第一行一个整数 NNN。
接下来 NNN 行,每行包括一个字符串,和两个整数,用空格隔开,分表代表这个同学的姓名,平时分和期末考试成绩。
从高到低输出对应同学的姓名。如果两个同学的得分相同,原来输入顺序靠前的,输出时也应当靠前。
4
a 60 36
b 70 49
c 50 25
d 60 36
b 70
a 60
d 60
c 50
#include
#include
#includetypedef struct finalScore{char name[21];int score;
}finalScore;void insert_sort(finalScore *num,int len){for(int i=0;ifinalScore tmp = num[i];int j = i;while(j > 0 && num[j-1].score < tmp.score){num[j] = num[j-1];j--;}num[j] = tmp;}
}
int main(){int n;char name[21];int final,usual;scanf("%d",&n);finalScore f[110];for(int i=0;iscanf("%s %d %d",&name,&usual,&final);strcpy(f[i].name,name);int score = (int)(ceil(sqrt(final)*10)*0.6 + 0.4*usual + 0.5);f[i].score = score;}insert_sort(f,n);for(int i=0;iprintf("%s %d",f[i].name,f[i].score);if(i!=n-1){printf("\n");}}return 0;
}