c C++ 输入10个学生5.门课的成绩,分别用函数实现下列功能: 计算平均分方差: ●用函数重载的方法,让计算方差的函数支持不同的数据类型●用函数模板的方法,实现排序函数,并进行调用
时间: 2024-02-18 10:04:53 浏览: 77
C语言程序设计-有一个一维数组score,内放10个学生的成绩,用一个函数来求平均成绩;
5星 · 资源好评率100%
好的,我来回答你的问题。
首先需要声明一个包含10个学生5门课成绩的二维数组:
```c++
int scores[10][5];
```
然后实现计算平均分的函数:
```c++
double average(int arr[], int len) {
int sum = 0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return (double)sum / len;
}
```
接下来,实现计算方差的函数,通过函数重载来支持不同数据类型:
```c++
double variance(int arr[], int len) {
double avg = average(arr, len);
double sum = 0;
for (int i = 0; i < len; i++) {
sum += pow(arr[i] - avg, 2);
}
return sum / len;
}
double variance(double arr[], int len) {
double avg = average(arr, len);
double sum = 0;
for (int i = 0; i < len; i++) {
sum += pow(arr[i] - avg, 2);
}
return sum / len;
}
```
最后,实现排序函数模板:
```c++
template <typename T>
void sort(T arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
```
调用示例:
```c++
int main() {
// 输入10个学生5门课成绩
// ...
// 计算平均分
for (int i = 0; i < 10; i++) {
double avg = average(scores[i], 5);
cout << "第" << i + 1 << "名学生的平均分为:" << avg << endl;
}
// 计算方差
for (int i = 0; i < 10; i++) {
double var = variance(scores[i], 5);
cout << "第" << i + 1 << "名学生的方差为:" << var << endl;
}
// 排序
double arr[] = { 3.5, 2.0, 1.7, 4.2, 5.1 };
sort(arr, 5);
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
阅读全文