#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int m,n,i,j;
char name[20],subject[1000];
double a[100][100],sum=0,ave;
scanf("%d%d",&m,&n);
for(i=0;i<=n;i++)
{
memset(subject,0,sizeof subject);
scanf("%s",subject);//scanf遇到空格会结束,所以输入一长串subject,他能够自己断开
if(i==0)
printf("name ");//name占八个字符左对齐,然后加上,两列间的两个空格,一共是10个字符
else
printf("%5s ",subject);
}
printf(" sum\n");//前面加上两个空格之后,sum才算占了五个字符
for(j=0;j<m;j++)//一共m个学生所以是<
{
memset(name,0,sizeof name);
scanf("%s",name);//输入的是字符串,tom是一个字符串,一共输入m次,m个学生
sum=0;
for(i=0;i<n;i++)//n个科目
{
scanf("%lf",&a[j][i]);
sum+=a[j][i];
}
printf("%-8s ",name);
for(i=0;i<n;i++)//和上面同理每行输出n个数据,没有等于
printf("%5.1lf ",a[j][i]);//除了占五个,后面还有两个空格
printf("%5.1lf\n",sum);//每行的sum输出之后要换行
}
printf("average ");
for(i=0;i<n-1;i++)//先循环谁一定要想明白,还有,为了下面的格式控制所以这里要变为n-1,而不是m-1
{
sum=0;
for(j=0;j<m;j++)
sum+=a[j][i];
printf("%5.1lf ",sum/m);
}
sum=0;
for(j=0;j<m;j++)
sum+=a[j][n-1];
printf("%5.1lf\n",sum/m);
return 0;
}
学生成绩统计表(各种对齐,保留位数等格式问题)
最新推荐文章于 2024-06-05 17:38:41 发布