72328


国語、数学、英語の点数を人数分だけくり返し読み込み(人数制限１０人以内)、各教科の平均点及び3教科の合計の平均を計算して格納する、そして、格納した各平均点を表形式で出力したいのですが、そもそも、どのようにプログラムすれば表形式となるのかもわかりません。

期待している出力結果は以下のようになるそうです。

[code]

    人数を入力してください：5
    1人目の国語、数学、英語の点数：69 98 87
    2人目の国語、数学、英語の点数：34 54 45
    3人目の国語、数学、英語の点数：100 95 75 
    4人目の国語、数学、英語の点数：80 78 35
    5人目の国語、数学、英語の点数：52 78 98
    
    国語　数学　英語　合計
    ーーーーーーーーーーーー
     69   98    87  254
     34   54    45  133
    100   95    75  270
     80   78    35  193
     52   78    98  228
    ーーーーーーーーーーーー
    67.0 80.6 68.0 215.6
    
[/code]

＜自作プログラム（現段階）＞

[code]

    #include<stdio.h>
    
    int main(void)
    {
        int ma[10][3],mb[10][3],mc[10][3];
        int i,j,num;
        printf("人数を入力してください: ");    scanf("%d",&num);
       for(i=1;i<=num;i++){
         printf("%d人目の国語、数学、英語の点数",i);   scanf("%d %d %d",&ma[i][j],&mb[i][j],&mc[i][j]);
       }  
    
    }
    
[/code]

現段階では、点数を聞くところまでは完成しているのですが、そこからどのようにしたら平均と合計が見本のように出力されるのかがわかりません。

初学者なので（始めてから三ヶ月足らず）かなり杜撰な質問となってしまったかもしれませんが、よろしくお願いします。


CC BY-SA 4.0
2020-12-01T10:15:12.723
72324
2020-12-02T04:22:29.103
2020-12-02T03:35:27.887
3060
41837
question
c
各行に3つの数値を打ち込み、そのデータから合計と平均を求める


入力のコードにも問題があります。

>
[code]

>     int ma[10][3],mb[10][3],mc[10][3];
>  
[/code]

の `[3]` は使っていません。

>
[code]

>     for(i=1;i<=num;i++){
>         printf("%d人目の国語、数学、英語の点数",i);   scanf("%d %d
> %d",&ma[i][j],&mb[i][j],&mc[i][j]);
>  
[/code]

制御変数 `i` も1から始まっていますので、配列の範囲外を参照しています。

以上を修正すると、入力のコードは以下のようになります。

[code]

    #include <stdio.h>
    
    int main(void)
    {
        int ma[10], mb[10], mc[10];
        int i, num;
    
        printf("人数を入力してください: ");
        scanf("%d", &num);
        for(i = 0; i < num; i++) {
            printf("%d人目の国語、数学、英語の点数", i + 1);
            scanf("%d %d %d", &ma[i], &mb[i], &mc[i]);
        }
    }
    
[/code]

> 各教科の平均点及び3教科の合計の平均を計算

教科毎の累計をsa、sb、scに格納することにします。  
ある人の3教科の合計の累計をsumに格納することにします。  
平均は必要なところで計算しています。

合計と平均を表示する処理を追加したコード例です。

[code]

    #include <stdio.h>
    
    int main(void)
    {
        int ma[10], mb[10], mc[10];
        int i, num;
        int sum = 0;
        int work;
        double sa = 0.0, sb = 0.0, sc = 0.0;
    
        printf("人数を入力してください: ");
        scanf("%d", &num);
        for(i = 0; i < num; i++) {
            printf("%d人目の国語、数学、英語の点数", i);
            scanf("%d %d %d", &ma[i], &mb[i], &mc[i]);
        }
        printf("\n");
        printf("国語  数学  英語 合計\n");
        printf("―――――――――――\n");
        for(i = 0; i < num; i++) {
            work = ma[i] + mb[i] + mc[i];
            printf("%3d   %3d   %3d   %3d\n", ma[i], mb[i], mc[i], work);
            sum += work;
            sa += (double)ma[i];
            sb += (double)mb[i];
            sc += (double)mc[i];
        }
        printf("―――――――――――\n");
        printf("%3.1f  %3.1f  %3.1f %3.1f\n", sa / (double)num, sb / (double)num, sc / (double)num,
               (double)sum / (double)num);
    }
    
[/code]


CC BY-SA 4.0
2020-12-01T12:28:13.540
72328
2020-12-02T04:22:29.103
2020-12-02T04:22:29.103
35558
35558
72324
answer