c语言转移表问题,哪位大神帮看看
#include<stdio.h>
double add(double,double);
double sub(double,double);
double div(double,double);
double (*oper_fun[3])(double,double)={add,sub,div};
int main()
{
double a,b,result;
scanf("%f%f",&a,&b);
result=oper_fun[1](a,b);
printf("ret is %f",result);
return 0;
}
double add(double a,double b)
{return a+b;
}
double sub(double a,double b)
{return a*b;
}
double div(double a,double b)
{return a/b;
}
VC6.0下
键入 12 34
怎么输出的数好大呀
哪位帮改改,运行结果正常发过来一个。 C 转移表
[解决办法]
你应该用%lf去接受double型数据,单步跟踪下你会发现,输入完a和b的值以后,内存中a,b并非你输入的值,而是一个很大的数。
scanf("%lf%lf",&a,&b);
[解决办法]
#include<stdio.h>
double add(double,double);
double sub(double,double);
double div(double,double);
double (*oper_fun[3])(double,double) = {add,sub,div};
int main(void)
{
double a,b,result;
scanf("%lf%lf",&a,&b);
result = oper_fun[1](a,b);
printf("ret is %lf\n",result);
return 0;
}
double add(double a, double b)
{
return a+b;
}
double sub(double a, double b)
{
return a*b;
}
double div(double a, double b)
{
return a/b;
}
在linux下测试的,程序没问题,结果是:“ret is 408.000000”。看到楼主是用V6.0的,可能是V6.0环境的问题吧。
[解决办法]
#include<stdio.h>
double add(double,double);
double sub(double,double);
double div(double,double);
double (*oper_fun[3])(double,double)={add,sub,div};
int main()
{
double a,b,result;
scanf("%lf%lf",&a,&b);//改为%lf。。
result=oper_fun[1](a,b);
printf("ret is %f",result);
return 0;
}
double add(double a,double b)
{
return a+b;
}
double sub(double a,double b)
{
return a*b;
}
double div(double a,double b)
{
return a/b;
}