用C语言编程,输入10个学生5门课的成绩,计算平均分方差。然后用函数重载的方法,让计算方差的函数支持不同的数据类型;
时间: 2024-02-18 15:04:51 浏览: 59
c代码-输入5名学生的分数,并显示出他们的总分和平均分。
好的,我来回答你的问题。
首先,我们可以通过以下代码来实现输入10个学生5门课的成绩,并计算平均分和方差:
```c
#include <stdio.h>
#include <math.h>
#define N 10 // 学生数
#define M 5 // 课程数
int main()
{
int i, j;
float score[N][M]; // 成绩数组
float sum[N], avg[N], var[N]; // 分别表示每个学生的总分、平均分和方差
// 输入成绩
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的成绩:\n", i + 1);
for (j = 0; j < M; j++) {
printf("请输入第%d门课的成绩:", j + 1);
scanf("%f", &score[i][j]);
sum[i] += score[i][j];
}
avg[i] = sum[i] / M; // 计算平均分
}
// 计算方差
for (i = 0; i < N; i++) {
float sum_var = 0;
for (j = 0; j < M; j++) {
sum_var += pow(score[i][j] - avg[i], 2);
}
var[i] = sum_var / M; // 计算方差
}
// 输出结果
for (i = 0; i < N; i++) {
printf("第%d个学生的平均分为%.2f,方差为%.2f\n", i + 1, avg[i], var[i]);
}
return 0;
}
```
接下来,我们可以通过函数重载的方式,让计算方差的函数支持不同的数据类型。具体实现如下:
```c
#include <stdio.h>
#include <math.h>
float var(int n, float arr[])
{
int i;
float sum = 0, avg, sum_var = 0;
for (i = 0; i < n; i++) {
sum += arr[i];
}
avg = sum / n; // 计算平均值
for (i = 0; i < n; i++) {
sum_var += pow(arr[i] - avg, 2);
}
return sum_var / n; // 计算方差
}
double var(int n, double arr[])
{
int i;
double sum = 0, avg, sum_var = 0;
for (i = 0; i < n; i++) {
sum += arr[i];
}
avg = sum / n; // 计算平均值
for (i = 0; i < n; i++) {
sum_var += pow(arr[i] - avg, 2);
}
return sum_var / n; // 计算方差
}
int main()
{
float arr1[5] = { 1.2, 2.3, 3.4, 4.5, 5.6 };
double arr2[5] = { 1.2, 2.3, 3.4, 4.5, 5.6 };
printf("float数组的方差为%.2f\n", var(5, arr1));
printf("double数组的方差为%.2f\n", var(5, arr2));
return 0;
}
```
这样,我们就成功地实现了用C语言编程,输入10个学生5门课的成绩,计算平均分方差,并且用函数重载的方式,让计算方差的函数支持不同的数据类型。
阅读全文