【问题描述】用指针作参数编写函数void Calc(float s[], int n,float* ave, float *fail),计算n个同学的某科考试成绩s的平均分ave和不及格率fail。在main函数中进行数据输入和输出。 【输入形式】n个成绩,n设为10,数据之间用空格隔开。 【输出形式】输出:ave=?,fail=?。结果保留小数点2位。 【样例输入】8186 75 73 90 92 6653 42 35
时间: 2024-01-22 16:17:54 浏览: 124
以下是该问题的C++代码实现:
```cpp
#include <iostream>
using namespace std;
void Calc(float s[], int n, float* ave, float* fail) {
float sum = 0;
int cnt = 0;
for (int i = 0; i < n; i++) {
sum += s[i];
if (s[i] < 60) {
cnt++;
}
}
*ave = sum / n;
*fail = (float)cnt / n;
}
int main() {
const int n = 10;
float s[n];
for (int i = 0; i < n; i++) {
cin >> s[i];
}
float ave, fail;
Calc(s, n, &ave, &fail);
cout << "ave=" << fixed << setprecision(2) << ave << ",fail=" << fixed << setprecision(2) << fail << endl;
return 0;
}
```
解析:
1. `Calc` 函数用来计算平均分和不及格率。传入参数为成绩数组 `s[]`、数组长度 `n` 以及指针类型的平均分 `ave` 和不及格率 `fail`。
2. 在函数内部,通过循环遍历数组计算总成绩 `sum` 和不及格人数 `cnt`,然后根据公式计算平均分和不及格率。
3. 在 `main` 函数中,先输入成绩数据,然后调用 `Calc` 函数计算平均分和不及格率,并将结果输出。注意在输出时要使用 `fixed` 和 `setprecision` 控制输出精度。
4. 由于 `ave` 和 `fail` 是指针类型的参数,需要在调用函数时使用 `&` 取地址符获取它们的地址,使得函数内部能够修改它们的值。
阅读全文