!关于用指向函数的指针作函数参数的有关问题
求助!!关于用指向函数的指针作函数参数的问题
自己写了个程序但调试中发现第二次调用时就没有执行;请高手帮忙看看:
#include "stdio.h "
#include "math.h "
main()
{
float intergral(float,float,float (*fun)(float,float));
float f1(float,float);
float f2(float,float);
float f3(float,float);
float f4(float,float);
float f5(float,float);
float a,b;
printf( "enter a and b:\n ");
scanf( "%f,%f ",&a,&b);
printf( "f1= ");
intergral(a,b,f1);
printf( "f2= ");
intergral(a,b,f2); /*发现到这里程序不在往下走运行结果提示f2=Floating point error: main.*/
printf( "f3= ");
intergral(a,b,f3);
printf( "f4= ");
intergral(a,b,f4);
printf( "f5= ");
intergral(a,b,f5);
}
float intergral(float x,float y,float (*fun)(float,float)){
float result;
result=(*fun)(x,y);
printf( "%6.2f\n ",result);
}
float f1(float x,float y){
float result1;
result1=(y+y*y)-(x+x*x);
return result1;
}
float f2(float x,float y){
float result1;
result1=((3*y+y*y)-(3*x+x*x));
return (result1);
}
float f3(float x,float y){
float result1;
result1=(y+exp(y))-(x+exp(x));
return result1;
}
float f4(float x,float y){
float result1;
result1=((1+y)*(1+y)*(1+y)/3)-((1+x)*(1+x)*(1+x)/3);
return result1;
}
float f5(float x,float y){
float result1;
result1=(y*y*y*y/4-x*x*x*x/4);
return result1;
}
------解决方案--------------------
浮点库的链接问题 ~
float a,b;==》
float a,b=1.0;
增加一个显式的浮点操作,
强制进行浮点库连接即可 ~
自己写了个程序但调试中发现第二次调用时就没有执行;请高手帮忙看看:
#include "stdio.h "
#include "math.h "
main()
{
float intergral(float,float,float (*fun)(float,float));
float f1(float,float);
float f2(float,float);
float f3(float,float);
float f4(float,float);
float f5(float,float);
float a,b;
printf( "enter a and b:\n ");
scanf( "%f,%f ",&a,&b);
printf( "f1= ");
intergral(a,b,f1);
printf( "f2= ");
intergral(a,b,f2); /*发现到这里程序不在往下走运行结果提示f2=Floating point error: main.*/
printf( "f3= ");
intergral(a,b,f3);
printf( "f4= ");
intergral(a,b,f4);
printf( "f5= ");
intergral(a,b,f5);
}
float intergral(float x,float y,float (*fun)(float,float)){
float result;
result=(*fun)(x,y);
printf( "%6.2f\n ",result);
}
float f1(float x,float y){
float result1;
result1=(y+y*y)-(x+x*x);
return result1;
}
float f2(float x,float y){
float result1;
result1=((3*y+y*y)-(3*x+x*x));
return (result1);
}
float f3(float x,float y){
float result1;
result1=(y+exp(y))-(x+exp(x));
return result1;
}
float f4(float x,float y){
float result1;
result1=((1+y)*(1+y)*(1+y)/3)-((1+x)*(1+x)*(1+x)/3);
return result1;
}
float f5(float x,float y){
float result1;
result1=(y*y*y*y/4-x*x*x*x/4);
return result1;
}
------解决方案--------------------
浮点库的链接问题 ~
float a,b;==》
float a,b=1.0;
增加一个显式的浮点操作,
强制进行浮点库连接即可 ~