第十七周 【项目6-学生成绩统计】(4)

素颜马尾好姑娘i 2022-08-06 04:26 204阅读 0赞
  1. 问题及代码:
  2. /*
  3. *Copyright (c) 2014,烟台大学计算机学院
  4. *ALL right reserved
  5. *文件名:学生成绩统计
  6. *作者;童宇
  7. *完成日期:2014年12月21日
  8. *版本号v1.0
  9. *问题描述:每位同学的信息学号、姓名、C++、高数、英语成绩
  10. *输入描述:从键盘上输入N名学生的信息(N定义为常变量,N==3)
  11. *程序输出:输出每位同学的信息学号、姓名、总分和均分。
  12. */
  13. #include <iostream>
  14. using namespace std;
  15. struct Student
  16. {
  17. char num[13];
  18. char name[10];
  19. int cpp;
  20. int math;
  21. int english;
  22. int grade;
  23. double average;
  24. };
  25. void calculate(Student s[],int n); //计算总分和均分,数据在s数组中,共有n个元素
  26. void sort1(Student [],int); //按总分降序排序
  27. void sort2(Student [],int); //按学号升序排序
  28. void output(Student [],int); //输出成绩单
  29. void outputExcellent(Student [],int); //输出优秀者:总分超285,单科不低于90
  30. int main()
  31. {
  32. Student stu[]=
  33. {
  34. {"201152501104","Tom",65,69 ,68 },
  35. {"201152501114","Jeery",94 ,89 ,63 },
  36. {"201152501138","Speike",67 ,62 ,84 },
  37. {"201152501204","Tyke",100 ,95 ,91 },
  38. {"201152501202","Tuffy",59 ,80 ,55 },
  39. {"201152501115","Butch",100 ,99 ,89 },
  40. {"201152501201","Light",95 ,92 ,99 },
  41. {"201152501145","Topsy",88 ,56 ,67 },
  42. {"201152501203","Droopy",62 ,62 ,95 },
  43. {"201152501140","Drupa",80 ,60 ,86 },
  44. {"201152501205","Buzz",73 ,90 ,94}
  45. };
  46. int stuNum=sizeof(stu)/sizeof(stu[0]); //用sizeof运算确定数组中元素个数
  47. calculate(stu,stuNum); //计算总分和均分后输出
  48. cout<<"下面是成绩单:"<<endl;
  49. output(stu,stuNum);
  50. cout<<"优秀者名单:"<<endl;
  51. outputExcellent(stu,stuNum);
  52. //按总分降序排序后输出
  53. sort1(stu,stuNum);
  54. cout<<"按总分降序排序后:"<<endl;
  55. output(stu,stuNum);
  56. //按学号升序排序后输出
  57. sort2(stu,stuNum);
  58. cout<<"按学号升序排序后:"<<endl;
  59. output(stu,stuNum);
  60. return 0;
  61. }
  62. void calculate(Student s[],int n) //计算总分和均分,数据在s数组中,共有n个元素
  63. {
  64. int i;
  65. for(i=0; i<n; i++)
  66. {
  67. s[i].grade=s[i].cpp+s[i].math+s[i].english;
  68. s[i].average=s[i].grade/3;
  69. }
  70. }
  71. void sort1(Student Stu[],int n) //按总分降序排序
  72. {
  73. int i,j;
  74. Student t;
  75. for(i=0; i<n-1; i++)
  76. {
  77. for(j=0; j<n-i-1; j++)
  78. {
  79. if(Stu[j].grade<Stu[j+1].grade)
  80. {
  81. t=Stu[j];
  82. Stu[j]=Stu[j+1];
  83. Stu[j+1]=t;
  84. }
  85. }
  86. }
  87. }
  88. void sort2(Student Stu[],int n) //按学号升序排序
  89. {
  90. int i,j;
  91. Student t;
  92. for(i=0; i<n-1; i++)
  93. {
  94. for(j=0; j<n-i-1; j++)
  95. {
  96. if(Stu[j].num<Stu[j+1].num)
  97. {
  98. t=Stu[j];
  99. Stu[j]=Stu[j+1];
  100. Stu[j+1]=t;
  101. }
  102. }
  103. }
  104. }
  105. void output(Student Stu[],int n) //输出成绩单
  106. {
  107. int i;
  108. for(i=0; i<n; i++)
  109. {
  110. cout<<Stu[i].num<<"\t"<<Stu[i].name<<"\t\t"<<Stu[i].cpp<<"\t"<<Stu[i].math<<"\t"<<Stu[i].english<<"\t"<<Stu[i].grade<<"\t"<<Stu[i].average<<endl;
  111. }
  112. }
  113. void outputExcellent(Student Stu[],int n) //输出优秀者:总分超285,单科不低于90
  114. {
  115. int i;
  116. for(i=0; i<n; i++)
  117. {
  118. if(Stu[i].grade>285&&Stu[i].cpp>=90&&Stu[i].math>=90&&Stu[i].english>=90)
  119. {
  120. cout<<Stu[i].num<<"\t"<<Stu[i].name<<"\t\t"<<Stu[i].cpp<<"\t"<<Stu[i].math<<"\t"<<Stu[i].english<<"\t"<<Stu[i].grade<<"\t"<<Stu[i].average<<endl;
  121. }
  122. }
  123. }

运行结果:

Center

发表评论

表情:
评论列表 (有 0 条评论,204人围观)

还没有评论,来说两句吧...

相关阅读