首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言转移表有关问题,哪位大神帮看看

2013-06-25 
c语言转移表问题,哪位大神帮看看#includestdio.hdouble add(double,double)double sub(double,double)

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;
}

热点排行