设计使用动态数组, 对输入的全班学生的某门课成绩,进行均值和均方差计算。学生人数N由键盘输入。 若将 N个数 A[]的平均值记为 Avg,均方差计算公式为: Std = sqrt N (A 1 −Avg) 2 +(A 2 −Avg) 2 +...+(A N −Avg) 2 。 输入格式: 首先在第一行给出一个正整数 N(≤20 ),随后一行给出 N 个正整数,同行数字以空格分隔。 输出格式: 输出这N个数的均值、均方差,精度输出小数点后3位。
时间: 2023-05-19 21:02:38 浏览: 105
我可以为您提供以下代码:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int N;
cin >> N;
double sum = 0, sum2 = 0;
double* A = new double[N];
for (int i = 0; i < N; i++) {
cin >> A[i];
sum += A[i];
}
double Avg = sum / N;
for (int i = 0; i < N; i++) {
sum2 += pow(A[i] - Avg, 2);
}
double Std = sqrt(sum2 * N);
cout << "均值:" << Avg << endl;
cout << "均方差:" << Std << endl;
delete[] A;
return 0;
}
注意:这个程序使用了动态数组来存储学生的成绩,然后计算均值和均方差。如果您输入的 N 大于 20,程序将无法正常工作。
相关问题
用c语言输入10个学生5门课的成绩,用函数实现下列功能 计算平均分方差
以下是用C语言输入10个学生5门课的成绩,用函数实现计算平均分方差的方法:
```c
#include <stdio.h>
#include <math.h>
#define N 10
#define M 5
// 计算平均分
void average(float score[][M], float avg_stu[], float avg_course[]) {
int i, j;
float sum_stu, sum_course;
for (i = 0; i < N; i++) {
sum_stu = 0;
for (j = 0; j < M; j++) {
sum_stu += score[i][j];
avg_course[j] += score[i][j];
}
avg_stu[i] = sum_stu / M;
}
for (j = 0; j < M; j++) {
avg_course[j] /= N;
}
}
// 计算方差
float variance(float score[][M], float avg_stu[], float avg_course[]) {
int i, j;
float sum = 0;
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
sum += pow(score[i][j] - avg_stu[i], 2);
}
}
for (j = 0; j < M; j++) {
sum += pow(avg_course[j] - avg_stu[N], 2) * N;
}
return sum / (N * M);
}
int main() {
float score[N][M], avg_stu[N], avg_course[M];
int i, j, max_i, max_j;
float max_score = 0, var;
// 输入成绩
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的成绩:\n", i + 1);
for (j = 0; j < M; j++) {
scanf("%f", &score[i][j]);
}
}
// 计算平均分
average(score, avg_stu, avg_course);
// 找出最高分数所对应的学生和课程
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if (score[i][j] > max_score) {
max_score = score[i][j];
max_i = i;
max_j = j;
}
}
}
printf("最高分数为%.2f,对应的学生为%d,课程为%d\n", max_score, max_i + 1, max_j + 1);
// 计算平均分方差
var = variance(score, avg_stu, avg_course);
printf("平均分方差为%.2f\n", var);
return 0;
}
```
输入10个学生5门课的成绩,用函数实现下列功能 计算平均分方差
以下是计算平均分方差的Python代码:
```python
def average(lst):
return sum(lst) / len(lst)
def variance(lst):
avg = average(lst)
return sum([(x - avg) ** 2 for x in lst]) / len(lst)
# 假设成绩存储在一个10行5列的二维列表中,名为scores
scores = [[80, 90, 70, 60, 85], [75, 85, 95, 70, 80], [90, 80, 70, 60, 75], [85, 75, 80, 90, 70], [70, 60, 75, 85, 95], [80, 90, 70, 60, 85], [75, 85, 95, 70, 80], [90, 80, 70, 60, 75], [85, 75, 80, 90, 70], [70, 60, 75, 85, 95]]
# 计算每个学生的平均分
student_avg = [average(row) for row in scores]
# 计算每门课程的平均分
course_avg = [average([row[i] for row in scores]) for i in range(5)]
# 找出所有50个分数中最高的分数所对应的学生和课程
max_score = max([max(row) for row in scores])
max_student, max_course = [(i+1, j+1) for i, row in enumerate(scores) for j, score in enumerate(row) if score == max_score][0]
# 计算平均分方差
variance_score = [variance([row[i] for row in scores]) for i in range(5)]
avg_variance = average(variance_score)
print("每个学生的平均分:", student_avg)
print("每门课程的平均分:", course_avg)
print("最高分数所对应的学生和课程:", "学生{},课程{}".format(max_student, max_course))
print("平均分方差:", avg_variance)
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)