给定程序MODIl.C中函数fun的功能是:计算函数(x,y,z)=(x+y)/(x—y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。 例如,当x的值为9、y的值为11、z的值为15时,函数值为一3.50。 请改正程序

admin2016-10-29  25

问题 给定程序MODIl.C中函数fun的功能是:计算函数(x,y,z)=(x+y)/(x—y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。
    例如,当x的值为9、y的值为11、z的值为15时,函数值为一3.50。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#include
#include
/************found************/
#define FU(m,n)  (m/n)
float fun(float a,float b,fIoat c)
{  float valme;
  value=FU(a+b,a—b)+FU(c+b,c—b);
/************found************/
  Return(Valme);
}
main()
{  float x,y,z,sum;
  printf("Input x y z:");
  scanf("%f%f%f",&x,&y,&z);
  printf("x=%f,y=%f,z=%f\n",x,y,z);
  if(x==y || y==z){printf("Data
error!\n"); exit(0);}
  sum=fun(x,y,z);
  printf("The result is:%5.2 f\n",
sum);
}

选项

答案(1)#define FU(m,n) ((m)/(n)) (2)return(value);

解析 (1)函数fun两次调用宏FU来计算“value=FU(a+b,a-b)+FU(c+b,c-b);”。检查宏的定义是否正确,可以用实参代入宏进行展开:(a+b/a—b),由此看到,FU(a+b,a.b)进行的计算不是(a+b)/(a-b),而是(a+b/a-b),因为“/”的优先级高于“+”或“-”,所以要使用括号限定计算优先顺序。所以将“#define FU(m,n)(m/n)”改为“#define FU(m,n)((m)/(n))”。
(2)第二个标识下返刚语句的关键字有误。所以,第二个标识下“Return(value);”应该改为“return (value);”C语言中没有“Return”这个天键字。
转载请注明原文地址:https://kaotiyun.com/show/VjDp777K
0

最新回复(0)