fork download
  1. #include <stdio.h>
  2.  
  3. struct student {
  4. int id; /* 学籍番号 */
  5. int eng; /* 英語の成績 */
  6. int math; /* 数学の成績 */
  7. int sci; /* 理科の成績 */
  8. int total; /* 合計点 */
  9. };
  10.  
  11. #define N 3
  12.  
  13. int main() {
  14. int i, j;
  15. struct student s[N] = {
  16. {17001, 60, 100, 20},
  17. {17002, 90, 40, 80},
  18. {17003, 20, 30, 50}
  19. };
  20. struct student tmp;
  21.  
  22. /* 合計点の計算とソート */
  23. for (i = 0; i < N; i++) {
  24. s[i].total = s[i].eng + s[i].math + s[i].sci;
  25. }
  26.  
  27. for (i = 1; i < N; i++) {
  28. for (j = 0; j < N - i; j++) {
  29. if (s[j].total > s[j + 1].total) {
  30. tmp = s[j];
  31. s[j] = s[j + 1];
  32. s[j + 1] = tmp;
  33. }
  34. }
  35. }
  36.  
  37. /* 成績のプリント */
  38. for (i = 0; i < N; i++) {
  39. printf("学籍番号:%-7d 英語:%-5d 数学:%-5d 理科:%-5d 合計点:%-5d\n",
  40. s[i].id, s[i].eng, s[i].math, s[i].sci, s[i].total);
  41. }
  42.  
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
学籍番号:17003   英語:20    数学:30    理科:50    合計点:100  
学籍番号:17001   英語:60    数学:100   理科:20    合計点:180  
学籍番号:17002   英語:90    数学:40    理科:80    合計点:210