山科OJ(计科作业8):Problem J: 学生成绩统计表

题目如下:

此题虽然看上去复杂,但是仔细想一想其实就是一个二维数组的运用,另外再注意一下输出格式就可以了(注意表头不能用一个字符串全部输入!!!因为输入时表头间的空格数不一定和输出时要求的空格数相同(虽然给出的测试样例是这样,但是经过亲测,结果为WA50%,说明可能有的测试点输入时表头的空格数不等于输出时所要求的空格数)此点下面的注释也稍有提及)。 

下面是AC代码加注释:

#include<stdio.h>
#include<string.h>
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    char s[n+2][60];
    for(int i=0; i<n+1; i++)  //由于表头各个字符间空格个数不确定,所以需要分别输入每个表头,再按照要求输出
        scanf("%s",s[i]);
    char name[m][10];  //每个同学的名字
    double score[m][n];   //二维数组存储每个同学的每个分数
    for (int i=0; i<m; i++)
    {
        scanf("%s",name[i]);  //输入名字
        for (int j=0; j<n; j++)
            scanf("%lf",&score[i][j]);  //输入成绩
    }
 
    double sum[m];  //每个同学的总分
    for (int i=0; i<m; i++)
    {
        sum[i]=0;
        for (int j=0; j<n; j++)
            sum[i]+=score[i][j];
    }
    for(int i=0; i<n+1; i++)  //以下代码为按照要求的格式输出
    {
        if(i==0)
            printf("%-8s",s[i]);
        else
            printf("  %5s",s[i]);
    }
    printf("    sum\n");
    for (int i=0; i<m; i++)
    {
        printf("%-8s",name[i]);
        for (int j=0; j<n; j++)
            printf("  %5.1lf",score[i][j]);
        printf("  %5.1lf\n",sum[i]);
    }
    printf("average   ");
    double t;  //t存储的为各科的总分
    for(int i=0;i<n-1;i++)
    {
        t=0;
        for(int j=0;j<m;j++)
            t+=score[j][i];
        printf("%5.1lf  ",t/m);
    }
    t=0;
    for(int j=0;j<m;j++)
        t+=score[j][n-1];
    printf("%5.1lf\n",t/m);
 
}

如果有不同的意见或有需要改进的地方欢迎大家在评论区提出。

继续加油!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值