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

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

2012-02-21 
%f,%d 整形和实型的问题#includemath.h floatresult(floatx,floaty,float(*p)()){floatss(*p)(x,y)pr

%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好了

热点排行