#include<stdio.h>
#define n 7
#define m 12

int main()
{
    char kamoku[m][n] = {"科目", "国語", "数学", "理科", "社会", "英語", "合計"};
    char namae[m][n] = {"科目", "太郎", "次郎", "三郎", "四郎", "五郎", "花子", "春子", "夏子", "秋子", "冬子", "平均"};
    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}};

    int i, j, k;

    printf("┌───┬──┬──┬──┬──┬──┬───┐\n");//一行目,科目名が３文字なのでそれぞれにスペースを入れて罫線をそろえる!
    printf("│");//二行目
    printf("科目名");

    for (i = 1; i < n - 1; ++i)
    {
        printf("│%s", kamoku[i]);
    }

    printf("│ %s │\n", kamoku[6]);
    printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目

    for (i = 1; i < 11; i++)   //成績表示
    {
        printf("│　%s", namae[i]);

        for (j = 1; j < n - 1; j++)
        {
            printf("│%4.0f", seiseki[i][j]);
            seiseki[i][0] += seiseki[i][j]; //横計
        }

        printf("│%6.0f│\n", seiseki[i][0]);
        printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目をコピー
    }

    printf("│　%s", namae[11]);

    for (j = 1; j < n - 1; j++)
    {
        for (i = 1; i < m - 1; i++)
        {
            seiseki[0][j] += seiseki[i][j]; //縦計
        }

        printf("│%4.1f", seiseki[0][j] / (m - 2)); //科目平均
        seiseki[0][0] += seiseki[0][j]; //総点
    }

    printf("│%6.1f│\n", seiseki[0][0] / (m - 2)); //合計平均
    printf("└───┴──┴──┴──┴──┴──┴───┘\n");
    int x;
    int v[m];

    for (i = 0; i < m; i++)
    {
        v[i] = i;
    }

    for (j = 1; j < n - 1; j++)
    {
        printf("%s\n", kamoku[j]);
        printf("順位　名前　成績\n");
        int l = 1;

        for (i = 1; i <= m - 2; i++)
        {
            for (k = m - 2; k > i; k--)
            {
                if (seiseki[v[k - 1]][j] < seiseki[v[k]][j])
                {
                    x = v[k - 1];
                    v[k - 1] = v[k];
                    v[k] = x;
                }
            }

            if (i > 1)
            {
                if (seiseki[v[i - 1]][j] != seiseki[v[i]][j])
                {
                    l = i;
                }
            }

            printf("%4d  %2s  %4.0f\n", l, namae[v[i]], seiseki[v[i]][j]);
        }
    }

    return 0;
}
