简化突出要点写法:
double f1(int n, double a[], double x){} 子函数1
double Get_Run_Time(double (*f)(int, double *, double)){ 子函数2
(*f)(MAX, a, 1.1);
}
printf("Run time of f1: %.2e sec\n\n", Get_Run_Time(f1));//main函数写法
printf("Run time of f1: %.2e sec\n\n", Get_Run_Time(f1));//此处调用函数f1
printf("Run time of f2: %.2e sec\n", Get_Run_Time(f2));//此处调用函数f2
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;
}
double Get_Run_Time(double (*f)(int, double *, double))//子函数之间的相互调用,使用指针,并把原函数的参数均写上
{
clock_t start, stop;
int i;
start = clock();
for(i = 0; i < 100000; i++){
(*f)(MAX, a, 1.1);
}
stop = clock();
//printf("%f\n%f\n", (double)start, (double)stop); //注:要显示clock_t数值,先将其转化为double
return (double)(stop - start) / CLOCKS_PER_SEC / 100000; //宏CLOCKS_PER_SEC为1000
}