我是编程新手。所以,细节表示赞赏。
#include<stdio.h>
#include<math.h>
int main()
{
float x, f(x);
printf("Enter x=");
scanf("%f", &x);
f(x)= 3*pow(x, 5)- 5*sqrt(x)-6*sin(x); /*in this line compiler shows error*/
printf("f(x)= %f", f(x));
return 0;
}
答案 0 :(得分:0)
在您的代码中,f(x)
是有效的标识符,但不是变量。它是一个非常糟糕的(现在无效,根据最新的C标准)函数原型。您不能指定,它不是可修改的左值。
这就是
的原因 f(x)= 3*pow(x, 5)- 5*sqrt(x)-6*sin(x);
编译器尖叫。
为什么您的代码没有为无效格式引发错误,它是编译器中的遗留支持。在你的情况下
float x, f(x);
处理与
相同 float x, float f ( int x ) ; //missing data type is treated as 'int',
// DON'T rely on this "feature"
答案 1 :(得分:0)
以下可行。
#include <stdio.h>
#include <math.h>
int main()
{
float x, f;
printf("Enter x=");
scanf("%f", &x);
f = 3 * pow(x, 5) - 5 * sqrt(x) - 6 * sin(x);
printf("f(x)= %f", f);
return 0;
}
答案 2 :(得分:0)
请原谅我假设你是一名C初学者,正在寻找用C编写函数的方法。那里有很多C教程,我建议找一个进一步学习。
以下是使用实际C函数进行操作的示例。
#include<stdio.h>
#include<math.h>
/* first define the function */
float f(float x) /* function head */
{ /* start of function body */
return 3*pow(x, 5) - 5*sqrt(x)-6*sin(x);
} /* end of function body and definition */
int main(void)
{
float x; /* definition of function has already happened, so no f(x) here */
printf("Enter x=");
scanf("%f", &x);
printf("f(x)= %f", f(x) /* call the function */);
/* Note that some coding styles do not like calling a function
from within a more complex statement. Using a variable to
take the result of the function is preferred.
I chose this way to stay more similar to your own code.
*/
return 0;
}