Problem J: 學生成績統計表
Time Limit: 1 Sec Memory Limit: 16 MBSubmit: 902 Solved: 416
[Submit][Status][Web Board]
Description
在學校裏經常見到的成績表,表的每行是一個學生的成績,每列是各個科目的成績。如下表所示。
你的任務是:輸入這樣的成績表,統計出每個學生的總成績和各個科目的平均成績。如下表所示。
Input
第一行爲兩個整數m,n,0<m<=50、0<n<=10,表示有m個學生和n個成績。
後面有m+1行n+1列的一個表,表的第1行和第1列都是不含空白符的字符串,表的各列用若干空格分隔,表的各行用一個回車分隔。第1行的2~n+1列是各個科目的名字。第2~m+1行1列爲學生姓名。第2行2列開始到第m+1行、n+1列爲各學生的各科目成績(浮點數)。
Output
輸出爲一張表,表的大小爲m+2行、n+2列,其中前m+1行n+1列的數據與輸入相同。
表的最右側一列爲學生各科目成績的總和,該列第1行的標題是“sum”。
表的最下面一行爲各科目的所有學生平均成績,該行的第1列標題是“average”。
表的第1列輸出爲8個字符左對齊,後面每列爲5個字符右對齊,兩列之間有2個空格。表的所有數據項(除第1行和第1列外)都輸出爲保留1位小數。表的每行用一個回車分隔,表的最右邊一列的數據項後沒有空格。
請注意:表的最右下角那項沒有定義,不輸出!最後1行的輸出至最右一個科目的平均分結束,該行最後有回車。
Sample Input
Sample Output
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int rr,cc;
char top[1000],temp[100];
int i,k;
char name[20];
double a[100][100],sum = 0;
scanf("%d%d",&rr,&cc);
getchar();
//printf("r = %d,c = %d\n",rr,cc);
for(i = 0; i <= cc; i++)
{
memset(temp,0,sizeof(temp));
scanf("%s",temp);
if(i != 0)
printf("%5s ",temp);
else
printf("name ");
}
printf(" sum\n");
//printf("r = %d,c = %d\n",rr,cc);
for(k = 0; k < rr; k++)
{
//------------------------------- save name
memset(name,0,sizeof(name));
scanf("%s",name);
//------------------------------- save && plus the grade
sum = 0;
for(i = 0; i < cc; i++)
{
scanf("%lf",&a[k][i]);
sum += a[k][i];
}
//------------------------------- out name
printf("%-8s ",name);//-8 !
//------------------------------- out the grade
for(i = 0; i < cc; i++)
printf("%5.1lf ",a[k][i]);// +5!
printf("%5.1lf\n",sum);
}
printf("average ");
for(i = 0; i < cc-1; i++)
{
sum = 0;
for(k = 0; k < rr; k++)
sum += a[k][i];
printf("%5.1lf ",(double)sum/rr);
}
sum = 0;
for(k = 0; k < rr; k++)
sum += a[k][cc-1];
printf("%5.1lf\n",(double)sum/rr);
return 0;
}