fork download
  1. #include <stdio.h>
  2.  
  3. #define N 3
  4.  
  5. struct student {
  6. int id; /* 学籍番号 */
  7. int eng; /* 英語の成績 */
  8. int math; /* 数学の成績 */
  9. int sci; /* 理科の成績 */
  10. int total; /* 合計点(追加箇所) */
  11. };
  12.  
  13.  
  14. void swap(struct student *p1, struct student *p2) {
  15. struct student temp = *p1;
  16. *p1 = *p2;
  17. *p2 = temp;
  18. }
  19.  
  20.  
  21. void printSeiseki(struct student s[]) {
  22. int i;
  23. for (i = 0; i < N; i++) {
  24.  
  25. printf("%7d %5d %5d %5d %10d\n", s[i].id, s[i].eng, s[i].math, s[i].sci, s[i].total);
  26. }
  27. }
  28.  
  29. int main() {
  30. int i, j;
  31. struct student s[N] = {
  32. {17001, 60, 100, 20},
  33. {17002, 90, 40, 80},
  34. {17003, 20, 30, 50}
  35. };
  36.  
  37.  
  38. for (i = 0; i < N; i++) {
  39. s[i].total = s[i].eng + s[i].math + s[i].sci;
  40. }
  41.  
  42. /* ソート(totalの昇順に書き換え、swapの呼び出し方を変更) */
  43. for (i = 1; i < N; i++) {
  44. for (j = 0; j < N - i; j++) {
  45.  
  46. if (s[j].total > s[j + 1].total) {
  47.  
  48. swap(&s[j], &s[j + 1]);
  49. }
  50. }
  51. }
  52.  
  53. /* 成績のプリント */
  54. printSeiseki(s);
  55.  
  56. return 0;
  57. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
  17003    20    30    50        100
  17001    60   100    20        180
  17002    90    40    80        210