学生总成绩排序.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <stdio.h>
  2. typedef struct {
  3. int student_id;
  4. int math;
  5. int english;
  6. int chinese;
  7. int total;
  8. } Student;
  9. int main() {
  10. int n;
  11. int i,j;
  12. scanf("%d", &n);
  13. if (n >= 10) {
  14. printf("Please input 1-9.\n");
  15. return 0;
  16. }
  17. Student students[10];
  18. for (i = 0; i < n; i++) {
  19. scanf("%d %d %d %d", &students[i].student_id, &students[i].math, &students[i].english, &students[i].chinese);
  20. students[i].total = students[i].math + students[i].english + students[i].chinese;
  21. }
  22. for (i = 0; i < n; i++) {
  23. for (j = 0; j < n - i - 1; j++) {
  24. if (students[j].total < students[j + 1].total || (students[j].total == students[j + 1].total && students[j].student_id > students[j + 1].student_id)) {
  25. Student temp = students[j];
  26. students[j] = students[j + 1];
  27. students[j + 1] = temp;
  28. }
  29. }
  30. }
  31. for (i = 0; i < n; i++) {
  32. printf("%4d%10d%5d%5d%5d\n", i + 1, students[i].student_id, students[i].math, students[i].english, students[i].chinese);
  33. }
  34. return 0;
  35. }