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;
}