题目
本题是谭浩强《C程序设计课后习题》题7.14。
题目:
输人10个学生5门课的成绩, 分别用函数实现下列功能:
①计算每个学生的平均分;
②计算每门课的平均分;
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
根据题目进行函数定义,最后一个函数是求方差,将方差公式转换成代码即可。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
#define M 10//10个学生
#define N 5//5门课程
float stuavg[M];//用于存放每个学生的平均分
float courseavg[N];//用于存放每门课程的平均分
int i, j;
void savg(float score[][N])//①计算每个学生的平均分;
{
for (i = 0; i < M; i++)
{
float sum = 0.0;
for (j = 0; j < N; j++)
{
sum += score[i][j];
}
stuavg[i] = sum / N;
}
for (i = 0; i < M; i++)
printf("第%d个学生的平均成绩为:%.2f\n", i + 1, stuavg[i]);
}
void cavg(float score[][N])//②计算每门课的平均分;
{
for (i = 0; i < N; i++)
{
float sum = 0.0;
for (j = 0; j <M; j++)
{
sum += score[j][i];
}
courseavg[i] = sum / M;
}
for (i = 0; i < N; i++)
printf("第%d门课程的平均分为:%.2f\n", i + 1, courseavg[i]);
}
void findmax(float score[][N])//③找出所有50个分数中最高的分数所对应的学生和课程;
{
float max = score[0][0];
int x, y;
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
if (max < score[i][j])
{
max = score[i][j];
x = i;
y = j;
}
}
printf("所有50个分数中最高的分数为:%.2f所对应的学生是第%d个,课程是第%d个.\n", max, x + 1, y + 1);
}
void sum(float score[][N])//④计算平均分方差:
{
float sum1 = 0.0;//平均分平方和
float sum2 = 0.0;//平均分和
for (i = 0; i < M; i++)
{
sum1 += stuavg[M] * stuavg[M];
sum2 += stuavg[M];
}
printf("平均分方差为:%.2f", sum1 / M - (sum2 / M) * (sum2 / M));
}
void main()
{
float score[M][N] = { 0 };
for (i = 0; i < M; i++)
{
printf("请输入第%d名学生的%d门成绩:", i + 1, N);
for (j = 0; j < N; j++)
{
scanf("%f", &score[i][j]);
}
}
savg(score);
cavg(score);
findmax(score);
sum(score);
}
三、执行结果
输入:
请输入第2名学生的5门成绩:1 2 3 4 5
请输入第3名学生的5门成绩:1 2 3 4 5
请输入第4名学生的5门成绩:1 2 3 4 5
请输入第5名学生的5门成绩:1 2 3 4 5
请输入第6名学生的5门成绩:1 2 3 4 5
请输入第7名学生的5门成绩:1 2 3 4 5
请输入第8名学生的5门成绩:1 2 3 4 5
请输入第9名学生的5门成绩:1 2 3 4 5
请输入第10名学生的5门成绩:1 2 3 4 50
输出:
第1个学生的平均成绩为:3.00
第2个学生的平均成绩为:3.00
第3个学生的平均成绩为:3.00
第4个学生的平均成绩为:3.00
第5个学生的平均成绩为:3.00
第6个学生的平均成绩为:3.00
第7个学生的平均成绩为:3.00
第8个学生的平均成绩为:3.00
第9个学生的平均成绩为:3.00
第10个学生的平均成绩为:12.00
第1门课程的平均分为:1.00
第2门课程的平均分为:2.00
第3门课程的平均分为:3.00
第4门课程的平均分为:4.00
第5门课程的平均分为:9.50
所有50个分数中最高的分数为:50.00所对应的学生是第10个,课程是第5个.
平均分方差为:0.00