程序如下,小白想编一个输出方程2*x^3-4*x^2+3x-6=0在区间(-10,10)之间的根的程序,在下方定义了一个函数,编译时,dev提示“[Error] a function-definition is not allowed here before “{” token”,小白难以看出程序问题,请教高手解答,谢谢!
#include<stdio.h>
#include<stdlib.h>
float x,y,z,a,b,n,k,i,j,a1,b1;
float fc(float y);
int main()
{
printf(“方程2*x^3-4*x^2+3x-6=0在区间(-10,10)之间的根为:\n”);
a=-10,b=10,a1=fc(a),b1=fc(b);
while(fc(x)!=0)
{
n=(a+b)/2;
z=fc(n);
x=n;
if(z==0) printf(“该方程在区间(-10,10)之间的根为:%d”,y);break;
if(z*a1<0) b=n,b1=z;
else z=n,a1=z;
}
float fc(float y)
{
y=2*y*y*y-4*y*y+3*y-6;
return y;
}
return 0;
}
未命名1.cpp In function “int main()”:
未命名1.cpp [Error] a function-definition is not allowed here before “{” token
#include<stdio.h>
#include<stdlib.h>
float x,y,z,a,b,n,k,i,j,a1,b1;
float fc(float y);
int main()
{
printf(“方程2*x^3-4*x^2+3x-6=0在区间(-10,10)之间的根为:\n”);
a=-10,b=10,a1=fc(a),b1=fc(b);
while(fc(x)!=0)
{
n=(a+b)/2;
z=fc(n);
x=n;
if(z==0) printf(“该方程在区间(-10,10)之间的根为:%d”,y);break;
if(z*a1<0) b=n,b1=z;
else z=n,a1=z;
}
float fc(float y)
{
y=2*y*y*y-4*y*y+3*y-6;
return y;
}
return 0;
}
未命名1.cpp In function “int main()”:
未命名1.cpp [Error] a function-definition is not allowed here before “{” token
解决方案
20
问题挺多的,本人一个一个来哈。
1、下面那个函数的定义,float fc(float y){}应该写在main函数之外。写在main函数下面即可
2、while条件语句中,调用fc时未给变量x值。(变量x只声明了,但是没有具体的值)
3、print函数中,%d应该改为%f(原因是是浮点变量)。那个y根据你的意思应该是x吧。看看是不是写错了。
4、if语句之后应该带{}括号,原因是你不光只有一句printf,还有一句break。两句以上就得用{}括起来。同理,下面的if也有同样的问题。
最后。你这个代码写的好乱。本人觉得在这个基础上根本没法改。
1、下面那个函数的定义,float fc(float y){}应该写在main函数之外。写在main函数下面即可
2、while条件语句中,调用fc时未给变量x值。(变量x只声明了,但是没有具体的值)
3、print函数中,%d应该改为%f(原因是是浮点变量)。那个y根据你的意思应该是x吧。看看是不是写错了。
4、if语句之后应该带{}括号,原因是你不光只有一句printf,还有一句break。两句以上就得用{}括起来。同理,下面的if也有同样的问题。
最后。你这个代码写的好乱。本人觉得在这个基础上根本没法改。
40
fc函数要放在主函数外面,而不是里面
#include<stdio.h> #include<stdlib.h> float x,y,z,a,b,n,k,i,j,a1,b1; float fc(float y); int main() { printf("方程2*x^3-4*x^2+3x-6=0在区间(-10,10)之间的根为:\n"); a=-10,b=10,a1=fc(a),b1=fc(b); while(fc(x)!=0) { n=(a+b)/2; z=fc(n); x=n; if(z==0) printf("该方程在区间(-10,10)之间的根为:%d",y);break; if(z*a1<0) b=n,b1=z; else z=n,a1=z; } return 0; } float fc(float y) { y=2*y*y*y-4*y*y+3*y-6; return y; }