第三章程序3-1、3-2

#include <stdio.h>
int lg(int);
main()
{
    int i,N;
    for(i=1,N=10;i<=6;i++,N*=10)
    printf("%7d %2d %9d\n",N,lg(N),N*lg(N));
}
int  lg(int N)
{
    int i;
    for(i=0;N>0;i++,N/=2);
    return i;
}

 

3-2:该程序计算整数数列x1,x2……,xN的平均值μ和标注偏差σ。这个数列由库函数rand生成,平均值μ和标准偏差σ的数学定义如下:


#include <math.h>
#include <stdlib.h>
#include <stdio.h>
typedef int Number;
Number randNum()
{return rand();}
main(int argc,char *argv[])
{
    int i,N=atoi(argv[1]);
    float m1=0.0,m2=0.0;
    Number x;
    for(i=0;i<N;i++)
    {
        x=randNum();
        m1+=((float)x)/N;
        m2+=((float)x*x)/N;

    }
    printf(" Average:%f\n",m1);
    printf("Std.deviation:%f\n",sqrt(m2-m1*m1));
}

让程序3-2能作用于其他数值类型(比如float,而不是int),最简单的办法是复制该文件,再将typedef修改成:

                         typedef   float    Number

                         同时将函数randNum修改成:

                         return 1.0*rand()/RAND_MAX;

                       (他将返回0到1之间的随机浮点数)

在C中另一种途径是把typedef和randNum放到一个单独的头文件中(假设为Num.h),在3-2的代码中用下面的指令替换他们:

                     *include  "Num.h"

接着,我们就可以用不同的typedef和randNum编写第二个头文件。而且,改名其中的一个文件或其他Num.h,将任何一个应用到程序3-2的主程序中,不需要对他进行其他的修改。


第三种可选方案,这是关键工程实践值得推荐的方法,也就是将程序分解成3个文件:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值