!关于用指向函数的指针作函数参数的有关问题

求助!!关于用指向函数的指针作函数参数的问题
自己写了个程序但调试中发现第二次调用时就没有执行;请高手帮忙看看:
#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;

增加一个显式的浮点操作,
强制进行浮点库连接即可 ~