m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为:10、20、30、4
时间: 2023-05-31 07:18:20 浏览: 186
### 回答1:
以下为编写的函数fun:
def fun(score):
avg = sum(score) / len(score) # 计算平均分
res = [] # 初始化结果列表
for s in score:
if s < avg: # 如果成绩低于平均分
res.append(round(s / avg, 2)) # 添加对应的分数值
return res # 返回结果列表
该函数接受一个score数值数组,返回一个列表,列表中的元素为低于平均分的分数值,分数值的计算方式为该分数值除以平均分并四舍五入至小数点后两位。
例如,当score数组为[10, 20, 30, 4]时,函数将返回[0.17, 0.33],分别对应着10、20两个低于平均分的分数值。
### 回答2:
首先,我们需要计算出score数组中所有成绩的平均分。可以通过遍历数组,累加所有成绩再除以人数m来得到平均分。这里用avg表示平均分。
然后,我们需要遍历数组,找出低于平均分的成绩并将其存入below数组中。
最后,返回低于平均分的人数。
下面给出代码实现:
```
int fun(int score[], int below[], int m) {
int count = 0;
int sum = 0;
for (int i = 0; i < m; i++) {
sum += score[i];
}
double avg = sum / (double)m;
for (int i = 0; i < m; i++) {
if (score[i] < avg) {
below[count++] = score[i];
}
}
return count;
}
```
注:这里将below数组的长度默认设置为与低于平均分的人数相等,也就是最多存放count个成绩。如果需要使用更多空间,可以在调用函数前根据需要创建一个更大的数组并传入函数。
### 回答3:
这道题目的意思是我们需要编写一个函数,输入一个包含m个人成绩的数组score,输出低于平均分的人数,并将低于平均分的分数存放在一个由below指针指向的数组中。
首先,我们需要计算出score数组的平均分。可以先把所有成绩加起来,再除以人数m,得到平均分mean。
接下来,我们可以遍历score数组,将低于平均分的分数存放在below所指的数组中。具体方法是,用一个below_index变量记录下一个存放在below数组中的位置,从score数组的第一个元素开始遍历,如果该元素小于平均分mean,就将它存放在below数组的当前位置,并将below_index加1。遍历完整个score数组之后,below数组中前below_index-1个元素就是低于平均分的分数了。
最后,我们只需要返回低于平均分的人数即可。这个数就等于below_index-1,因为below_index记录的是下一个要存放在below数组中的位置,而我们只需要计算已经存放了多少个元素。
下面是用C语言写出的代码实现:
```C
int fun(int score[], int m, int below[], int *below_num) {
int i, below_index = 0;
double sum = 0, mean;
// 计算平均分
for (i = 0; i < m; i++) {
sum += score[i];
}
mean = sum / m;
// 存放低于平均分的分数
for (i = 0; i < m; i++) {
if (score[i] < mean) {
below[below_index] = score[i];
below_index++;
}
}
// 保存低于平均分的人数
*below_num = below_index - 1;
return *below_num;
}
```
在主函数中,我们可以先定义一个score数组,然后调用fun函数计算低于平均分的人数和分数。下面是完整的示例代码:
```C
#include <stdio.h>
int fun(int score[], int m, int below[], int *below_num);
int main() {
int score[] = {10, 20, 30, 4};
int below[4], below_num;
fun(score, 4, below, &below_num);
printf("低于平均分的人数为:%d\n", below_num);
printf("低于平均分的分数为:");
for (int i = 0; i < below_num; i++) {
printf("%d ", below[i]);
}
printf("\n");
return 0;
}
int fun(int score[], int m, int below[], int *below_num) {
int i, below_index = 0;
double sum = 0, mean;
// 计算平均分
for (i = 0; i < m; i++) {
sum += score[i];
}
mean = sum / m;
// 存放低于平均分的分数
for (i = 0; i < m; i++) {
if (score[i] < mean) {
below[below_index] = score[i];
below_index++;
}
}
// 保存低于平均分的人数
*below_num = below_index - 1;
return *below_num;
}
```
阅读全文