读书人

%f%d 整形和实型的有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

%f,%d 整形和实型的问题
#include "math.h "
float result(float x,float y,float(*p)())
{
float s;
s=(*p)(x,y);
prfloatf( "%f\n ",s);
return(s);
}
float add(float x,float y)
{
return(x+y);
}
float sub(float x,float y)
{
return(x-y);
}
float mult(float x,float y)
{
return(x*y);
}
float divi(float x,float y)
{
return(x/y);
}
main()
{
float a,b,s1;
char op;
prfloatf( "please select your operation)(imput +,-,* or /)\n ");
scanf( "%c ",&op);
prfloatf( "please imput two numbers:\n ");
scanf( "%f %f ",&a,&b);
switch(op)
{
case '+ ':s1=result(a,b,add);break;
case '- ':s1=result(a,b,sub);break;
case '* ':s1=result(a,b,mult);break;
case '/ ':s1=result(a,b,divi);break;
}
prfloatf( "the operation is :%f %c%f=%f\n ",a,op,b,s1);
system( "pause ");

}
这个为什么用实型数据不能返回不了正确结果 可是如果把float全换成int,%f全换成%d却发现能够计算

[解决办法]
#include <iostream.h>

#include "math.h "
float result(float x,float y,float (*p)(float x, float y))
{
float s;
s=(*p)(x,y);
printf( "%f\n ",s);
return(s);
}
float add(float x,float y)
{
return(x+y);
}
float sub(float x,float y)
{
return(x-y);
}
float mult(float x,float y)
{
return(x*y);
}
float divi(float x,float y)
{
return(x/y);
}
int main()
{
float a,b,s1;
char op;
printf( "please select your operation)(imput +,-,* or /)\n ");
scanf( "%c ",&op);
printf( "please imput two numbers:\n ");
scanf( "%f %f ",&a,&b);
switch(op)
{
case '+ ':s1=result(a,b,add);break;
case '- ':s1=result(a,b,sub);break;
case '* ':s1=result(a,b,mult);break;
case '/ ':s1=result(a,b,divi);break;
}
printf( "the operation is :%f %c%f=%f\n ",a,op,b,s1);

return 0;
}
---------------------------------------------------
可以计算float啊。
加减乘除。
6.0, 2.0好了

读书人网 >C++

热点推荐