6678|3

9795

帖子

24

TA的资源

版主

楼主
 

C语言求一数组的平均值 [复制链接]

/*
 返回数组指定部分数值的平均值
 array:要分析的数组
 index: 起始索引
 len:  长度
 return:平均值
*/
double Average(unsigned long *array,unsigned int index,unsigned int len)
{
  double aver=0,count=index;
 int i;
 for(i=index;i<(len-index);i++)
 {
   aver+=array
  aver/=(double)(count++==index?1:2); 
 }
 return aver;
}
此帖出自单片机论坛

最新回复

去掉 每一次操作aver/=2;  在遍历最后操作 double Average(unsigned long *array, unsigned int index, unsigned int len) { if (len == 0) return 0; // 防止除零错误 unsigned long long sum = array[index]; // 使用更大范围的类型 int i; for (i = index + 1; i < len; i++) { sum += array[i]; // 累加数组元素 } return (double)sum / (len - index); // 返回平均值,确保返回浮动类型 }     详情 回复 发表于 2025-1-15 11:32
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

裸片初长成(高级)

沙发
 
看了半天基本看懂了。
这个平均值应该是几何平均。

楼主写的代码,体现了简练。


只是我觉得,使用(count++==index?1:2)会降低代码的执行效率。因为每一次执行时都要多加入一个判断。
此帖出自单片机论坛

点评

感谢指点,这个函数的确有问题,而且不只一个,呵。 我做了修改,看看这样会不会好些。 还有哪些地主需要注意的 /* 返回数组指定部分数值的平均值 array:要分析的数组 index: 起始索引 len: 长度 r  详情 回复 发表于 2012-6-23 09:51
 
 

回复

9795

帖子

24

TA的资源

版主

板凳
 

回复 沙发 dontium 的帖子

感谢指点,这个函数的确有问题,而且不只一个,呵。
我做了修改,看看这样会不会好些。
还有哪些地主需要注意的

  1. /*
  2. 返回数组指定部分数值的平均值
  3. array:要分析的数组
  4. index: 起始索引
  5. len:  长度
  6. return:平均值
  7. */
  8. double Average(unsigned long *array,unsigned int index,unsigned int len)
  9. {
  10.   double aver=array[index];
  11.   int i;
  12.   if(len==0)return 0;
  13.   for(i=index+1;i
  14.   {
  15.     aver+=array[i];
  16.     aver/=2;
  17.   }
  18.   return aver;
  19. }
复制代码
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 

去掉 每一次操作aver/=2;  在遍历最后操作

double Average(unsigned long *array, unsigned int index, unsigned int len)
{
    if (len == 0) return 0;  // 防止除零错误

    unsigned long long sum = array[index];  // 使用更大范围的类型
    int i;

    for (i = index + 1; i < len; i++) {
        sum += array[i];  // 累加数组元素
    }

    return (double)sum / (len - index);  // 返回平均值,确保返回浮动类型
}


 

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表