数据结构_写程序计算给定多项式在给定点处的值

来源:互联网 发布:程序员客栈 怎么样 编辑:程序博客网 时间:2024/06/02 04:33

#include "stdio.h"
#include "time.h"
#include "math.h"

//clock()捕捉从程序开始运行到clock()被调用时所耗费的时间,clock_t为其数据类型(单位)
clock_t start,stop;
double duration;
//多项式最大系数
#define MAXN 10
//函数最大调用次数
#define MAXK 1e7


double f1(int n,double a[],double x)
{
    int i;
    double p=a[0];
    for(i=1;i<=n;i++)
        p+=(a[i]*pow(x,i));
    return p;

}
double f2(int n,double a[],double x)
{
    int i;
    double p=a[n];
    for(i=n;i>0;i--)
        p=a[i-1]+x*p;
    return p;
}

void main()
{
    int i;
    double a[MAXN];
    //系数值
    for(i=0;i<MAXN;i++)  a[i]=(double) i;
    //start存放从main()起至此句程序锁耗费的时间
    start=clock();
    //单次运行时间过短时,可利用重复手段测算运行时间
    for(i=0;i<MAXK;i++)
        f1(MAXN-1,a,1.1);
    //stop存放从main()起至此句程序锁耗费的时间
    stop=clock();
    //CLK_TCK为机器每分钟所走的时钟打点数,此变量存放程序运行时间
    duration=((double)(stop-start))/CLK_TCK/MAXK;
    printf("Ticks1=%f\n",(double)(stop-start));
    printf("Time1=%6.2e\n",duration);

    start=clock();
    for(i=0;i<MAXK;i++)
        f2(MAXN-1,a,1.1);
    stop=clock();
    duration=((double)(stop-start))/CLK_TCK/MAXK;
    printf("Ticks2=%f\n",(double)(stop-start));
    printf("Time2=%6.2e\n",duration);

    return ;
}



0 0
原创粉丝点击