题目描述
摘要:本文详细讲解了PTA(程序设计类实验辅助教学平台)6-4题"求自定类型元素的平均"的完整实现。题目要求实现一个Average函数,计算N个ElementType类型元素的平均值。文章提供了函数接口定义、裁判测试程序样例、输入输出样例,并给出了两种代码实现:简洁的函数部分实现和完整的可运行程序实现。实现核心是使用double类型进行累加求和以避免精度丢失,然后除以元素个数得到平均值。
本题要求实现一个函数,求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[], int N ); int main () { ElementType S[MAXN]; int N, i; scanf("%d", &N); for ( i=0; i<N; i++ ) scanf("%f", &S[i]); printf("%.2f\n", Average(S, N)); return 0; } /* 你的代码将被嵌在这里 */输入样例:
3 12.3 34 -5输出样例:
13.77函数部分实现
ElementTypeAverage(ElementType S[],intN){inti=0;doubletemp=0;doubleaverage;for(;i<N;i++)temp=temp+S[i];average=temp/N;returnaverage;}代码部分实现
/* 6-4 求自定类型元素的平均 * 题目:实现函数 Average(S[], N),返回 N 个元素的平均值(保留 2 位小数)。 * 实现原理:先累加求和,再除以元素个数 N。 * 用 double 保存累加和与平均值以避免整型除法丢失精度; * 由于 ElementType 可能是 float,求和时转成 double 计算更稳妥。 * 时间复杂度 O(N),空间复杂度 O(1)。 */#include<stdio.h>#defineMAXN10typedeffloatElementType;ElementTypeAverage(ElementType S[],intN);intmain(){ElementType S[MAXN];intN,i;scanf("%d",&N);for(i=0;i<N;i++)scanf("%f",&S[i]);printf("%.2f\n",Average(S,N));return0;}/* 先求和再除以 N 得到平均值 */ElementTypeAverage(ElementType S[],intN){inti=0;doubletemp=0;/* 累加器,用 double 防止精度丢失 */doubleaverage;for(;i<N;i++)temp=temp+S[i];average=temp/N;/* 总和 / 个数 */returnaverage;}