【基础题目集】6-4 求自定类型元素的平均 (10分)

该博客主要介绍如何编写一个函数,用于计算自定义类型集合元素的平均值。题目要求在给定的数组S[]中,包含N个ElementType类型的元素,函数需返回这些元素的平均值,且结果应保持相同的类型。提供的输入样例显示,当输入为[12.3, 34, -5]时,输出的平均值应为13.77。" 78866150,7365714,SAP Fiori中OData的深度应用解析,"['SAPUI5', 'Fiori应用', 'OData服务', '数据操作', '企业应用']
摘要由CSDN通过智能技术生成

题目链接:https://pintia.cn/problem-sets/14/problems/736
本题要求实现一个函数,求N个集合元素S[]的平均值,其中集合元素的类型为自定义的ElementType。

函数接口定义:
ElementType Average( ElementType S[], int N );
其中给定集合元素存放在数组S[]中,正整数N是数组元素个数。该函数须返回N个S[]元素的平均值,其值也必须是ElementType类型。

裁判测试程序样例:

#include <stdio.h>

#define MAXN 10
typedef float ElementType;

ElementType Average( ElementType S[], 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是函数fun的实现: ```c #include <stdio.h> void fun(float *score, int n, float *average, float *max_score, int *max_num) { int i; float sum = 0.0; *max_score = 0.0; *max_num = 0; // 计算平均分和最高分 for (i = 0; i < n; i++) { sum += score[i]; if (score[i] > *max_score) { *max_score = score[i]; } } *average = sum / n; // 计算得最高分的人数 for (i = 0; i < n; i++) { if (score[i] == *max_score) { (*max_num)++; } } } int main() { float score[] = {85.5, 92.0, 78.5, 99.5}; float average, max_score; int max_num; fun(score, 4, &average, &max_score, &max_num); printf("平均分为:%.2f\n", average); printf("最高分为:%.2f\n", max_score); printf("得最高分的人数为:%d\n", max_num); return 0; } ``` 在主函数中可以调用fun函数来统计学生的平均成绩,最高分以及得最高分的人数。调用fun函数需要提供一个数组score,表示学生的成绩,一个整数n,表示学生的数量,以及三个指针变量,用于存储平均分、最高分和得最高分的人数。fun函数的实现过程中,首先计算平均分和最高分,然后再计算得最高分的人数。最后,主函数输出平均分、最高分和得最高分的人数。 ### 回答2: 要编写一个函数fun,实现统计若干个学生的平均成绩、最高分以及得最高分的人数的功能。函数的输入参数是一个包含各个学生分数的列表,函数的输出结果是一个包含平均成绩、最高分以及得最高分的人数的元组。 具体的实现步骤如下: 1. 创建一个变量total,用于存储所有学生的总分,初始值为0。 2. 创建一个变量count,用于统计学生的人数,初始值为0。 3. 创建一个变量max_score,用于存储最高分,初始值为列表中第一个元素的值。 4. 创建一个变量max_score_count,用于统计得最高分的人数,初始值为1。 5. 使用for循环遍历列表中的每个分数,将分数累加到total中,将count加1。 6. 在每次遍历时,比较当前分数与max_score的大小,如果大于max_score,则更新max_score的值,并将max_score_count重置为1;如果等于max_score,则将max_score_count加1。 7. 计算平均成绩,将total除以count,并保留两位小数。 8. 返回一个包含平均成绩、最高分和得最高分的人数的元组,元组的三个元素分别为平均成绩、最高分以及得最高分的人数。 以下是函数fun的完整代码: ```python def fun(scores): total = 0 count = 0 max_score = scores[0] max_score_count = 1 for score in scores: total += score count += 1 if score > max_score: max_score = score max_score_count = 1 elif score == max_score: max_score_count += 1 average_score = round(total / count, 2) result = (average_score, max_score, max_score_count) return result ``` 可以通过调用fun函数,传入包含学生分数的列表来获取平均成绩、最高分以及得最高分的人数: ```python scores = [15, 16, 17, 18, 15, 20, 19, 18, 17] result = fun(scores) print("平均成绩:", result[0]) print("最高分:", result[1]) print("得最高分的人数:", result[2]) ``` 运行结果如下: 平均成绩: 17.22 最高分: 20 得最高分的人数: 1 ### 回答3: 可以义一个函数`fun`,这个函数的输入为一个学生列表`students`,每个学生的成绩存储在一个字典中,包含名字和分数。函数的输出为平均分、最高分以及得最高分的人数。 具体实现如下: ``` def fun(students): # 初始化变量 total_score = 0 # 总分 max_score = 0 # 最高分 max_score_count = 0 # 最高分的人数 # 统计平均分和最高分 for student in students: total_score += student['score'] if student['score'] > max_score: max_score = student['score'] max_score_count = 1 # 初始化最高分的人数为1 elif student['score'] == max_score: max_score_count += 1 # 最高分的人数加1 # 计算平均分 average_score = total_score / len(students) # 返回结果 return average_score, max_score, max_score_count ``` 假设有如下的学生列表: ``` students = [{'name': '张三', 'score': 80}, {'name': '李四', 'score': 90}, {'name': '王五', 'score': 90}, {'name': '赵六', 'score': 85}] ``` 调用函数`fun`进行统计: ``` average, max_score, max_score_count = fun(students) print("平均分为:", average) print("最高分为:", max_score) print("得最高分的人数为:", max_score_count) ``` 输出结果为: ``` 平均分为: 86.25 最高分为: 90 得最高分的人数为: 2 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值