读书会的主题怎样起:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列

来源:百度文库 编辑:高考问答 时间:2024/04/28 13:37:16
编程实现:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分。输入/输出格式举例如下:

Input(输入成绩):

65 87 68 56 78

83 94 67 85 91

71 75 69 84 89

Output(输出结果) :

65 87 68 56 78 70.5

83 94 67 85 91 84.0

71 75 69 84 89 77.5

219.0 256.0 204.0 258.0 232.0 0

average:

73.0 85.3 68.0 86.0 77.3

要求:

(1) 数组类型为实型,输入成绩由scanf函数实现。

(2) 输出已输入的原始成绩数据(3×5)。

(3) 计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。

(4) j计算单科平均成绩后输出。

(*)修改程序,采用函数调用的方式实现。

1)编写一个函数输入数据,函数名为enter()。功能是输入原始学生成绩。

2)编写一个函数计算平均值,函数名为aver()。功能是计算平均成绩(包括每个学生的平均成绩和每个单科的平均成绩)。并将计算结果分别填入 4×6矩阵的最后一列和最后一行中。

3)编写一个函数输出数据,函数名为outarray()。功能是输出数组元素。

4)在主调函数中调用上述三个函数。

5)如果想将2)再进一步划分,应如何处理?

#include<stdio.h>
void main()
{
int i,j;
double a[4][6],sum=0;
printf("please enter students' grade.\n");
for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<5;j++)
{
scanf("%lf",a[i]+j);
sum+=a[i][j];
}
a[i][j]=sum/5;
}

for(i=0;i<6;i++)
{
for(j=0,sum=0;j<3;j++)sum+=a[j][i];
a[j][i]=sum;
}
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
printf("%6.0lf",a[i][j]);
printf("%6.1lf",a[i][j]);
putchar('\n');
}
for(i=0;i<6;i++)
printf("%6.2lf",a[3][i]);
return;
}