fork download
  1. #include<stdio.h>
  2. #define n 7
  3. #define m 12
  4.  
  5. int main()
  6. {
  7. char kamoku[m][n] = {"科目", "国語", "数学", "理科", "社会", "英語", "合計"};
  8. char namae[m][n] = {"科目", "太郎", "次郎", "三郎", "四郎", "五郎", "花子", "春子", "夏子", "秋子", "冬子", "平均"};
  9. int i, j, k;
  10. // printf("%d %d\n", sizeof(kamoku),sizeof(kamoku[0]));
  11. for (i = 0; i < m; i++) {}
  12. double seiseki[m][m] = {{0, 0, 0, 0, 0, 0}, {0, 74, 93, 80, 73, 99}, {0, 78, 82, 78, 82, 74}, {0, 94, 68, 61, 71, 87}, {0, 82, 76, 96, 68, 78}, {0, 74, 79, 70, 61, 78}, {0, 89, 70, 70, 60, 72}, {0, 84, 96, 65, 75, 85}, {0, 91, 83, 89, 66, 75}, {0, 80, 83, 75, 71, 64}, {0, 86, 96, 93, 70, 62}};
  13. for (i = 0; i < m + 1; i++)
  14. {
  15. for (j = 0; j < n - 1; j++) {}
  16. }
  17. printf("┌───┬──┬──┬──┬──┬──┬───┐\n");//一行目,科目名が3文字なのでそれぞれにスペースを入れて罫線をそろえる!
  18. printf("│");//二行目
  19. printf("科目名", kamoku[0]);
  20. for (i = 1; i < n - 1; ++i)
  21. {
  22. printf("│%s", kamoku[i]);
  23. }
  24. printf("│ %s │\n", kamoku[6]);
  25. printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目
  26. for (i = 1; i < 11; i++) //成績表示
  27. {
  28. printf("│ %s", namae[i]);
  29. for (j = 1; j < n - 1; j++)
  30. {
  31. printf("│%4.0f", seiseki[i][j]);
  32. seiseki[i][0] += seiseki[i][j]; //横計
  33. }
  34. printf("│%6.0f│\n", seiseki[i][0]);
  35. printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目をコピー
  36. }
  37. printf("│ %s", namae[11]);
  38. for (j = 1; j < n - 1; j++)
  39. {
  40. for (i = 1; i < m - 1; i++)
  41. {
  42. seiseki[0][j] += seiseki[i][j]; //縦計
  43. }
  44. printf("│%4.1f", seiseki[0][j] / (m - 2)); //科目平均
  45. seiseki[0][0] += seiseki[0][j]; //総点
  46. }
  47. printf("│%6.1f│\n", seiseki[0][0] / (m - 2)); //合計平均
  48.  
  49. printf("└───┴──┴──┴──┴──┴──┴───┘\n");
  50.  
  51.  
  52. for (i = 1; i <= 5; ++i)
  53. {
  54. printf("\n%s\n順位 名前 成績\n", kamoku[i]);
  55. int min = seiseki[1][i];
  56. int max = min;
  57. for (j = 1; j < m - 1; ++j)
  58. {
  59. if (min > seiseki[j][i])min = seiseki[j][i];
  60. if (max < seiseki[j][i])max = seiseki[j][i];
  61. }
  62. int juniDisp, juniInternal = 1;
  63. for (j = max; j >= min; --j)
  64. {
  65. juniDisp = juniInternal;
  66. for (k = 1; k < m - 1; ++k)
  67. {
  68. if (seiseki[k][i] == j)
  69. {
  70. ++juniInternal;
  71. printf("%2d %6s %3d\n", juniDisp, namae[k], j);
  72. }
  73. }
  74. }
  75. }
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0s 1788KB
stdin
Standard input is empty
stdout
┌───┬──┬──┬──┬──┬──┬───┐
│科目名│国語│数学│理科│社会│英語│ 合計 │
├───┼──┼──┼──┼──┼──┼───┤
│ 太郎│  74│  93│  80│  73│  99│   419│
├───┼──┼──┼──┼──┼──┼───┤
│ 次郎│  78│  82│  78│  82│  74│   394│
├───┼──┼──┼──┼──┼──┼───┤
│ 三郎│  94│  68│  61│  71│  87│   381│
├───┼──┼──┼──┼──┼──┼───┤
│ 四郎│  82│  76│  96│  68│  78│   400│
├───┼──┼──┼──┼──┼──┼───┤
│ 五郎│  74│  79│  70│  61│  78│   362│
├───┼──┼──┼──┼──┼──┼───┤
│ 花子│  89│  70│  70│  60│  72│   361│
├───┼──┼──┼──┼──┼──┼───┤
│ 春子│  84│  96│  65│  75│  85│   405│
├───┼──┼──┼──┼──┼──┼───┤
│ 夏子│  91│  83│  89│  66│  75│   404│
├───┼──┼──┼──┼──┼──┼───┤
│ 秋子│  80│  83│  75│  71│  64│   373│
├───┼──┼──┼──┼──┼──┼───┤
│ 冬子│  86│  96│  93│  70│  62│   407│
├───┼──┼──┼──┼──┼──┼───┤
│ 平均│83.2│82.6│77.7│69.7│77.4│ 390.6│
└───┴──┴──┴──┴──┴──┴───┘

国語
順位 名前 成績
 1   三郎  94
 2   夏子  91
 3   花子  89
 4   冬子  86
 5   春子  84
 6   四郎  82
 7   秋子  80
 8   次郎  78
 9   太郎  74
 9   五郎  74

数学
順位 名前 成績
 1   春子  96
 1   冬子  96
 3   太郎  93
 4   夏子  83
 4   秋子  83
 6   次郎  82
 7   五郎  79
 8   四郎  76
 9   花子  70
10   三郎  68

理科
順位 名前 成績
 1   四郎  96
 2   冬子  93
 3   夏子  89
 4   太郎  80
 5   次郎  78
 6   秋子  75
 7   五郎  70
 7   花子  70
 9   春子  65
10   三郎  61

社会
順位 名前 成績
 1   次郎  82
 2   春子  75
 3   太郎  73
 4   三郎  71
 4   秋子  71
 6   冬子  70
 7   四郎  68
 8   夏子  66
 9   五郎  61
10   花子  60

英語
順位 名前 成績
 1   太郎  99
 2   三郎  87
 3   春子  85
 4   四郎  78
 4   五郎  78
 6   夏子  75
 7   次郎  74
 8   花子  72
 9   秋子  64
10   冬子  62