实验六数组名做函数的参数 一、实验目的 1. 2.
掌握数组做函数参数的用法 初步理解传值和传址的不同
二、实验内容
1.题目A:输入学生个数m和科目个数n,然后输入m个学生n门课程的成绩,接下来用函数实现下列功能(最多100名学生,10门课程):
[1] 计算每个学生的平均分; [2] 计算每门课程的平均分;
[3] 找出所有50个分数中最高的分数所对应的学生和课程; [4] 计算平均分方差。 1.2.要求
[1] 根据题目要求编写程序,并输出正确结果 [2] 不允许用全局变量 [3] 函数的形参应该包括数组名
[4] 所有的输入输出操作都在main中进行,自定义函数仅负责计算
1.3.提示
[1] 有m名学生,每个学生n门课程,每个学生有平均分,每门课程有平均分。因此可以定义一个二维数组float scores[m+1][n+1]存储以上信息。该数组的最后一行存储每门课程的平均分,最后一列存储每个学生的平均分。 [2] 求学生平均分的函数声明为:
void avgStuScore(float scores[][10],int m,int n); [3] 求课程平均分的函数声明为:
void avgCourseScore(float scores[][10],int m,int n); [4] 找出所有50个分数中最高的分数所对应的学生和课程的函数声明为:
void findHighestScore(float scores[][10],int m,int n); [5] 计算平均分方差的函数声明为:
float std(float scores[][10],int m,int n);
源代码: 1 2 3 4 5 6 7 #include
float fangcha(float scores[][11],int m,int n); float scores[101][11] = {0}; int m,n; int i,j;
printf(\请输入学生人数m和课程门数n:\); scanf(\,&m,&n); printf(\请输入学生成绩:\\n\); //input
for(i = 0;i scanf(\,&scores[i][j]); avgStuScore(scores,m,n); avgCourseScore(scores,m,n); //方差在最后一行最后一列 scores[m][n] = fangcha(scores,m,n); //output for(i = 0;i<=m;i++) { for(j = 0;j<=n;j++) { printf(\,scores[i][j]); } printf(\); } findHighestScore(scores,m,n); return 0; } void avgStuScore(float scores[][11],int m,int n) { int i,j; float sum = 0; for(i = 0;i sum = 0.0; for(j = 0;j sum = sum + scores[i][j]; 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 } scores[i][n] = sum/n; } } void avgCourseScore(float scores[][11],int m,int n) { int i,j; float sum = 0; for(i = 0;i sum = 0.0; for(j = 0;j sum = sum + scores[j][i]; } scores[m][i] = sum/m; } } void findHighestScore(float scores[][11],int m,int n) { float max = 0; int maxi = 0,maxj = 0; int i,j; max = scores[0][0]; for(i = 0;i for(j = 0;j if (max < scores[i][j]) { max = scores[i][j]; maxi = i; maxj = j; } } } printf(\,max,maxi,maxj); } float fangcha(float scores[][11],int m,int n) { int i,j;

