问两个 C 语言的基础问题. C语言中, 如何对一个一维数组全部赋值, 或者清零? 有一组数据, 如何对其中所有数据迅速求加权平均值(或者类似的平均值)? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thedevil7
V2EX    问与答

问两个 C 语言的基础问题. C语言中, 如何对一个一维数组全部赋值, 或者清零? 有一组数据, 如何对其所有数据迅速求加权平均值(或者类似的平均值)?

  •  
  •   thedevil7 2012-07-13 19:02:29 +08:00 4580 次点击
    这是一个创建于 4839 天前的主题,其中的信息可能已经有所发展或是发生改变。
    实际情况是这样的:
    有一个 90 长度的数组中存着读入的数据, 对其进行求平均值后需要再利用这个数组读取下一次的数据
    所以需要对其进行清零..

    我想到的清零方法只有在每次读出每一个数据的 for 循环内部添加一句 result[i++] = 0; 的清零语句.


    得到的数组内部有 90 个数据(只有数据, 没有概率, 不像是求学分的加权平均值算法), 基本上在一个范围内, 想要利用某种算法求出一个较精确的平均值, 有这样的算法吗?

    感谢阅读.
    15 条回复    1970-01-01 08:00:00 +08:00
    raptium
        1
    raptium  
       2012-07-13 19:08:42 +08:00
    下次再入同一是有必要清零的吧?
    加平均值的,那每一的重是在哪呢?
    thedevil7
        2
    thedevil7  
    OP
       2012-07-13 19:14:23 +08:00
    @raptium

    嗯, 读入是没有必要清零了.
    只是还有另一组存放求平均值的数组需要清零.

    每一项的权重由该组数据统计得到, 比如某一个数据出现多次, 统计出现的概率.
    也就是说, 现在只有数据, 权重未知, 如果需要权重只有分析数据.
    不一定非得是加权平均的算法, 任何近似的算法都可以.

    补充: 使用的 C 不是 Win 不是 Linux 而是 MSP430 嵌入式 C 语言, 所以可能某些常用库以及常用的函数无法调用. 例如, memset.
    zzzlhope
        3
    zzzlhope  
       2012-07-13 19:14:29 +08:00
    1.可以不用清零吧?直接利用这个数组读取下一次的数据,上一次的数据会被覆盖掉。
    2.简单求平均值:
    float sum=0;
    float avg=0;
    for(int i,i<90,i++)
    {
    sum=sum+a[i];
    //如果有权值,可存入数组b[90]中,与a[90]一一对应,sum=sum+a[i]*b[i]
    }
    avg=sum/90;
    zzzlhope
        4
    zzzlhope  
       2012-07-13 19:16:15 +08:00
    我想把回复删了。。。
    chisj
        5
    chisj  
       2012-07-13 19:16:24 +08:00
    memset函数。
    haohaolee
        6
    haohaolee  
       2012-07-13 19:19:33 +08:00
    就用最符合直觉的方式做就OKay了吧
    013231
        7
    013231  
       2012-07-13 19:36:40 +08:00
    bzero函.

    BZERO(3) BSD Library Functions Manual BZERO(3)

    NAME
    bzero -- write zeroes to a byte string

    LIBRARY
    Standard C Library (libc, -lc)

    SYNOPSIS
    #include <strings.h>

    void
    bzero(void *s, size_t n);

    DESCRIPTION
    The bzero() function writes n zeroed bytes to the string s. If n is zero, bzero() does nothing.

    SEE ALSO
    memset(3), swab(3)

    HISTORY
    A bzero() function appeared in 4.3BSD. Its prototype existed previously in <string.h> before it was moved to <strings.h> for IEEE Std 1003.1-2001 (``POSIX.1'') com-
    pliance.

    BSD June 4, 1993 BSD
    (END)
    zxy
        8
    zxy  
       2012-07-13 19:39:36 +08:00
    @zzzlhope 我也赞同,看你的代码。。
    zzzlhope
        9
    zzzlhope  
       2012-07-13 19:44:50 +08:00
    @zxy 我把楼主当成求作业题的了。。。
    raptium
        10
    raptium  
       2012-07-13 20:37:30 +08:00   1
    加的重等於出的概率?那和普通的平均有什?
    laskuma
        11
    laskuma  
       2012-07-13 20:38:25 +08:00   1
    @thedevil7 不是很理解这个数据的含义...有格式吗?如果是要通过分析这些数据得出其中的权重的话,我就直接理解成为读入90个人每个人的分数。直接加起来/90 就已经是加过权的了。
    laskuma
        12
    laskuma  
       2012-07-13 20:38:58 +08:00   1
    @raptium 我也是这个意思。。。还是没太弄懂LZ的意思
    thedevil7
        13
    thedevil7  
    OP
       2012-07-13 21:20:43 +08:00   1
    @raptium
    @laskuma

    感谢二位, 这是楼主错误的想法. 送出感谢.
    laskuma
        14
    laskuma  
       2012-07-13 23:40:30 +08:00
    @thedevil7 多给了一个 还给LZ了 :)
    sqbing
        15
    sqbing  
       2012-07-13 23:56:38 +08:00
    Memset or bzero
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5852 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 06:27 PVG 14:27 LAX 23:27 JFK 02:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86