float x = 4.5;
main()
{
float y,float f();
x*=2.0;
y=f(x);
printf("\n%f%f",x,y);
}
float f (float a)
{
a+=1.3;
x-=4.5;
return(a+x);
}
这个节目来自书:让我们来自Yashwant kanetkar。它说的输出是4.500000 5.800000。我收到错误。
答案 0 :(得分:1)
//global variable x, can be accessed from anywhere
float x = 4.5;
//inform the compiler, that a function that is defined later, but it exists in the code, and to use it before it's defined, we need to know how it looks like:
float f(float a);
//I need to specify what my main function returns, typically "int"
int main()
{
//local variable for saving the result in:
float y;
//multiply x, with 2, and save the result in x:
x*=2.0;
//run the function:
y=f(x);
//show the result:
printf("\n%f%f",x,y);
//return a value to let the OS know how the program ended (0 is success)
return 0;
}
//define the function
float f (float a)
{
//whatever a is provided, add 1.3 to it before doing anything else
a+=1.3;
//subtract 4.5 from the global variable, before doing anything else:
x-=4.5;
//return the sum of a and x, as the result of this function.
return(a+x);
}
这里的数学是:
x = 4.5
x = (x * 2) = 9
a = (x = 9) = 9
a = (a + 1.3) = 10.3
x = (x - 4.5) = 4.5
y = a + x = (4.5 + 10.3) = 14.8
答案 1 :(得分:0)
第1点:
从float f();
移除main()
。在float f();
之外声明main()
。因此,它将用于前向声明的目的。
第2点。
删除,
并在;
之后添加float y
。
第3点。
main()
应为int main(void)
。
注意:请考虑在return
末尾添加明确的main()
语句。虽然不是强制性的,但被认为是一种很好的做法。
答案 2 :(得分:0)
float y,float f();
在float y
float y;
和float f();
//(错误的原型)。你需要将参数传递给这个函数。
无需在main中声明函数。您可以从float f();
功能中删除main()
。
主要没有返回任何值
使用
int main()
{
//your code
return 0;
}
答案 3 :(得分:0)
当您声明f()
:
float y,float f();
你没有使用原型。所以当调用f()
时:
y=f(x);
编译器将float
参数x
提升为double
类型。
要解决此问题,请使用完整原型声明该函数:
float f(float a);
答案 4 :(得分:0)
无需在main中声明变量等函数。 2.另外,main()应该是int main()
。 3.在使用之前定义/声明您的功能。
#include <stdio.h>
float x = 4.5;
float f (float a)
{
a+=1.3;
x-=4.5;
return(a+x);
}
int main(void) {
// your code goes here
float y;
x*=2.0;
y=f(x);
printf("\n%f%f",x,y);
return 0;
}
Ideone链接:http://ideone.com/W7V1Qr