填空题
下列给定程序中,函数fun()的功能是;计算函数 F(x, y ,z)=(x+ y)/(x-y)+(z+ y)/(z-y)的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为11,2的值为15时,函数值为-3.50。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio. h>
#include <math. h>
/**************found******************/
#define FU(m, n) (m/n)
float fun(float a, float b, float c)
float value;
value=FU(a+ b, a-b)+FU(c+ b, c-b);
/*************found******************/
return(Value);
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. 2f/n ",sum);
【正确答案】
1、{{*HTML*}}(1)错误;#define FU(m, n) (m/n) 正确:#define FU(m,n) (m)/(n)
(2)错误:return (Value); 正确:return (value);
【答案解析】[解析] 如果从数学思想来说,这是一道简单的小学数学题,当然,用C语言的别的办法实现的话,也用不了三两句的程序,但是,这道题的考查点在C语言的宏定义上(这样的问题比较隐蔽),它的格式为#define 标识符 字符串,中间要用空格分开,在该题中,标识符为FU (m, n),而字符串则是(m/n),由题干信息易知,应该是# define FU(m,n) (m)/(n)。