解题思路:定义结构,然后是输入题目要求,然后是根据要求进行判断,然后是采用冒泡法解决排序问题,最后是输出前五个.
注意事项:一定要注意等于号和双等于号在c语言当中的区别
参考代码:
#include<stdio.h>
typedef struct student{
int id;
int yu,shu,ying;
int sum;
}stu;
stu a[301];
stu temp[301];
int main()
{
int n,i,k,j,ID,p;
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
scanf("%d %d %d\n",&a[i].yu,&a[i].shu,&a[i].ying);
a[i].sum=a[i].yu+a[i].shu+a[i].ying;
a[i].id=i+1;
}
for(j=1;j<i;j++)
{
for(k=0;k<i-j;k++)
{
if(a[k+1].sum>a[k].sum)
{
/*temp=a[k+1].sum;
a[k+1].sum=a[k].sum;
a[k].sum=temp;
ID=a[k+1].id;
a[k+1].id=a[k].id;
a[k].id=ID;*/
temp[5]=a[k+1];
a[k+1]=a[k];
a[k]=temp[5];
}
else if(a[k+1].sum==a[k].sum)
{
if(a[k+1].yu>=a[k].yu)
{
/*temp=a[k+1].sum;
a[k+1].sum=a[k].sum;
a[k].sum=temp;
ID=a[k+1].id;
a[k+1].id=a[k].id;
a[k].id=ID;*/
temp[5]=a[k+1];
a[k+1]=a[k];
a[k]=temp[5];
}
}
}
}
for(p=0;p<5;p++)
{
printf("%d %d\n",a[p].id,a[p].sum);
}
return 0;
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复