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. for (j = 0; j < n - 1; j++) {}
  15. }
  16. printf("┌───┬──┬──┬──┬──┬──┬───┐\n");//一行目,科目名が3文字なのでそれぞれにスペースを入れて罫線をそろえる!
  17. printf("│");//二行目
  18. printf("科目名", kamoku[0]);
  19. for (i = 1; i < n - 1; ++i) {
  20. printf("│%s", kamoku[i]);
  21. }
  22. printf("│ %s │\n", kamoku[6]);
  23. printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目
  24. for (i = 1; i < 11; i++) { //成績表示
  25. printf("│ %s", namae[i]);
  26. for (j = 1; j < n - 1; j++) {
  27. printf("│%4.0f", seiseki[i][j]);
  28. seiseki[i][0] += seiseki[i][j]; //横計
  29. }
  30. printf("│%6.0f│\n", seiseki[i][0]);
  31. printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目をコピー
  32. }
  33. printf("│ %s", namae[11]);
  34. for (j = 1; j < n - 1; j++) {
  35. for (i = 1; i < m - 1; i++) {
  36. seiseki[0][j] += seiseki[i][j]; //縦計
  37. }
  38. printf("│%4.1f", seiseki[0][j] / (m - 2)); //科目平均
  39. seiseki[0][0] += seiseki[0][j]; //総点
  40. }
  41. printf("│%6.1f│\n", seiseki[0][0] / (m - 2)); //合計平均
  42.  
  43. printf("└───┴──┴──┴──┴──┴──┴───┘\n");
  44.  
  45.  
  46. for (i = 1; i <= 5; ++i) {
  47. printf("\n%s\n順位 名前 成績\n", kamoku[i]);
  48. int min = seiseki[1][i];
  49. int max = min;
  50. for (j = 1; j < m - 1; ++j) {
  51. if (min > seiseki[j][i])min = seiseki[j][i];
  52. if (max < seiseki[j][i])max = seiseki[j][i];
  53. }
  54. int juni = 0;
  55. for (j = max; j >= min; --j)
  56. for (k = 1; k < m - 1; ++k)
  57. if (seiseki[k][i] == j)printf("%2d %6s %3d\n", ++juni, namae[k], j);
  58. }
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0s 1832KB
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
10   五郎  74

数学
順位 名前 成績
 1   春子  96
 2   冬子  96
 3   太郎  93
 4   夏子  83
 5   秋子  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
 8   花子  70
 9   春子  65
10   三郎  61

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

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