解题思路:定义结构,然后是输入题目要求,然后是根据要求进行判断,然后是采用冒泡法解决排序问题,最后是输出前五个.
注意事项:一定要注意等于号和双等于号在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 人评分