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