解题思路:结构体由总分,学号,语数英三部分组成,然后按照代码所示的嵌套条件进行排序。
注意事项:
参考代码:
#include<stdio.h>
typedef struct Student{
int num,max,language,math,english;
}stu;
int main(){
int n,i,j,k,l;
scanf("%d",&n);
struct Student stu[n];
struct Student temp;
for(i=0;i<n;i++){//输入三科成绩,并算出总分和记录学号
scanf("%d %d %d",&stu[i].language,&stu[i].math,&stu[i].english);
stu[i].max=stu[i].language+stu[i].math+stu[i].english;
stu[i].num=i+1;
}
for(k=0;k<n;k++){//总分从大到小排序
for(int j=0;j<n-k-1;j++){
if(stu[j].max<stu[j+1].max){
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
for(l=0;l<n-1;l++){
if(stu[l].max==stu[l+1].max){//总分相等
if(stu[l].language<stu[l+1].language){//语文大的在前
temp=stu[l];
stu[l]=stu[l+1];
stu[l+1]=temp;
}
if(stu[l].language==stu[l+1].language){//语文相等
if(stu[l].num>stu[l+1].num){//学号小的在前
temp=stu[l];
stu[l]=stu[l+1];
stu[l+1]=temp;
}
}
}
}
for(i=0;i<5;i++){
printf("%d %d\n",stu[i].num,stu[i].max);
}
}
0.0分
0 人评分
去掉双斜杠注释 (C语言代码)浏览:1822 |
假币问题 (C语言代码)浏览:2339 |
简洁的代码浏览:1409 |
点我有惊喜!你懂得!浏览:2707 |
C语言考试练习题_保留字母 (C语言代码)浏览:693 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1033 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1036 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:867 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1357 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:798 |