1. #include <iostream>
  2. using namespace std;
  3. typedef struct student
  4. {
  5. int num,c_score,m_score,e_score,sum;
  6. };
  7. void cin_s(student *s,int n)
  8. {
  9. for(int i=0;i<n;i++)
  10. {
  11. cin>>s[i].c_score>>s[i].m_score>>s[i].e_score;
  12. s[i].num=i+1;
  13. s[i].sum=s[i].c_score+s[i].m_score+s[i].e_score;
  14. }
  15. return;
  16. }
  17. void sort_s(student *s,int n)
  18. {
  19. int i,j,m,low,high;
  20. student temp;
  21. for(i=1;i<n;i++)
  22. {
  23. low=0;
  24. high=i-1;
  25. while(low<=high)
  26. {
  27. m=(low+high)/2;
  28. if(s[m].sum>s[i].sum)
  29. low=m+1;
  30. else if(s[m].sum==s[i].sum)
  31. {
  32. if(s[m].c_score>s[i].c_score)
  33. low=m+1;
  34. else if(s[m].c_score==s[i].c_score)
  35. {
  36. if(s[m].num>s[i].num)
  37. high=m-1;
  38. else
  39. low=m+1;
  40. }
  41. else
  42. high=m-1;
  43. }
  44. else
  45. high=m-1;
  46. }
  47. temp=s[i];
  48. for(j=i;j>high+1;j--)
  49. s[j]=s[j-1];
  50. s[high+1]=temp;
  51. }
  52. return;
  53. }
  54. void print_s(student *s,int n)
  55. {
  56. int i=0;
  57. while(true)
  58. {
  59. cout<<s[i].num<<" "<<s[i].sum<<endl;
  60. i++;
  61. if(i==n||i==5)
  62. break;
  63. }
  64. return;
  65. }
  66. int main()
  67. {
  68. int n;
  69. cin>>n;
  70. student *s=new student[n];
  71. cin_s(s,n);
  72. sort_s(s,n);
  73. print_s(s,n);
  74. return 0;
  75. }
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论