第十七周项目6-学生成绩统计(4 已初始化)

灰太狼 2022-08-06 04:29 192阅读 0赞
  1. /*
  2. *Copyright(c)2014,烟台大学计算机学院
  3. *All rights reserved.
  4. *文件名称:test.cpp
  5. *作者:满星辰
  6. *完成日期:2014年 12月 22日
  7. *版本号:v1.0
  8. *问题描述:(4)使用相同的结构体类型,在main函数中已经对结构体数组进行了初始化,请完成相关函数的定义,实现main函数中要求的功能。
  9. *输入描述:
  10. *程序输出:按照要求输出。
  11. */
  12. #include <iostream>
  13. #include <cstring>
  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. {"201152501104","Tom",65,69 ,68 },
  34. {"201152501114","Jeery",94 ,89 ,63 },
  35. {"201152501138","Speike",67 ,62 ,84 },
  36. {"201152501204","Tyke",100 ,95 ,91 },
  37. {"201152501202","Tuffy",59 ,80 ,55 },
  38. {"201152501115","Butch",100 ,99 ,89 },
  39. {"201152501201","Lightning",95 ,92 ,99 },
  40. {"201152501145","Topsy",88 ,56 ,67 },
  41. {"201152501203","Droopy",62 ,62 ,95 },
  42. {"201152501140","Drupa",80 ,60 ,86 },
  43. {"201152501205","Buzz",73 ,90 ,94}
  44. };
  45. int stuNum=sizeof(stu)/sizeof(stu[0]); //用sizeof运算确定数组中元素个数
  46. //计算总分和均分后输出
  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)
  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.0;
  69. }
  70. return;
  71. }
  72. void sort1(Student s[],int n)
  73. {
  74. int i,j;
  75. Student t;
  76. for(i=0; i<n-1; ++i)
  77. {
  78. for(j=0; j<n-i-1; ++j)
  79. {
  80. if(s[j].grade<s[j+1].grade)
  81. {
  82. t=s[j];
  83. s[j]=s[j+1];
  84. s[j+1]=t;
  85. }
  86. }
  87. }
  88. return;
  89. }
  90. void sort2(Student s[],int n)
  91. {
  92. int i,j;
  93. Student t;
  94. for(i=0; i<n-1; ++i)
  95. for(j=0; j<n-i-1; ++j)
  96. if(strcmp(s[j].num,s[j+1].num)>0)
  97. {
  98. t=s[j];
  99. s[j]=s[j+1];
  100. s[j+1]=t;
  101. }
  102. return;
  103. }
  104. void output(Student s[],int n)
  105. {
  106. for(int i=0; i<n; ++i)
  107. {
  108. cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].grade<<'\t'<<s[i].average<<endl;
  109. }
  110. return;
  111. }
  112. void outputExcellent(Student s[],int n)
  113. {
  114. for(int i=0; i<n; ++i)
  115. {
  116. if(s[i].grade>285&&s[i].cpp>=90&&s[i].math>=90&&s[i].english>=90)
  117. {
  118. cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].grade<<'\t'<<s[i].average<<endl;
  119. }
  120. }
  121. return;
  122. }

运行展示:

Center

学习心得:

怎么也不能把学号比较出来。。。。。。

我觉得可能是因为学号太长了?

参考了畅大爷的用字符串的比较 strcmp做

发表评论

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

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

相关阅读