问答题
下列给定程序中,函数proc()的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不相等。例如,当x的值为10,y的值为20,z的值为30时,函数值为2.00。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
//****found****
#define FU(m, n)(m/n)
float proc(float x, float y, float z)
{
float value;
value=FU(x+y, x-y)+FU(z+y, z-y);
//****found****
return(Value);
}
void 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=proc(x, y, z);
printf("The result is: %5.2f/n", sum);
}
【正确答案】
【答案解析】(1)错误:#define FU(m, n)(m/n)
正确:#define FU(m, n)(m)/(n)
(2)错误:return(Value);
正确:return(value);
[解析] 通过观察公式,可知分子与分母各自独立,因此把宏定义中的“(m/n)”改为“(m)/(n)”;由函数proc()可知,变量Value没有定义,变量value中存放要返回给主函数中的值,因此,“return(Value);”应改为“return(value);”。