C语言!帮忙看下这个程序为啥没有结果输出?好像是没有print项。谁帮忙补充下?用的是二次插值法.

#include"stdio.h"#include"math.h"#include"conio.h"voidmain(){float*area(floata1,float... #include "stdio.h"
#include "math.h"
#include "conio.h"
void main()
{
float *area(float a1,float p,float a[3]);
float f(float x);
float ar,fr;
float a2,a3;
float f1,f2,f3;
float a1=10,p=0.01,e=0.00001;
float pa[3];
area(a1,p,pa);
a1=pa[0];
a2=pa[1];
a3=pa[2];
f1=f(a1);
f2=f(a2);
f3=f(a3);
do
{
ar=((a3*a3-a2*a2)*f1+(a1*a1-a3*a3)*f2+(a2*a2-a1*a1)*f3);
ar=ar/2/((a3-a2)*f1+(a1-a3)*f2+(a2-a1)*f3);
fr=f(ar);
if(ar>a2)
{
if(fr>f2)
{
a3=ar;f3=fr;}
else if(fr<f2)
{
a1=a2;f1=f2;
a2=ar;f2=fr;}
else
{
a3=ar;a1=a2;a2=(a1+a3)/2;
f1=f2;f3=fr;f2=f(a2);}
}
else if(ar<a2)
{
if(fr>f2)
{
a1=ar;f1=fr;}
else if(fr<f2)
{
a3=a2;f3=f2;
a2=ar;f2=fr;}
else
{
a1=ar;a3=a2;a2=(a1+a3)/2;
f1=fr;f3=f2;f2=f(a2);}
}
if(fabs(a1-a3)<=e) break;
}while(1);
if(f2<fr)
{
ar=a2;fr=f2;}
printf("\nx*=%f\nf(x*)=%f",ar,fr);
}

float *area(float a1,float p,float a[3])
{
float f(float x);
float a2,f2,a3,f3,temp;
float acc=0.01;
float f1=f(a1);
//float p;//这里有重复定义的错,p已经是函数的参数了,

while(1)
{
a2=a1+p;f2=f(a2);
if(f2>=f1)
{
if(fabs(f2-f1)<acc)
p=p/2;
else
p=-p;
}
else break;
}
while(1)
{
a3=a2+p;f3=f(a3);
if(f2<=f3) break;
p=2*p;
a1=a2;f1=f2;
a2=a3;f2=f3;
}
if(a1>a3)
{
temp=a1;a1=a3;a3=temp;}
a[0]=a1;a[1]=a2;a[2]=a3;
return a;
}
float f(float x)
{
float y=pow(x,4)-4*pow(x,3)-6*pow(x,2)-16*x+4;
return y;
}
展开
 我来答
潮苑博HS
2011-04-05 · 超过22用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:53.1万
展开全部
不好意思,我没看到你定义的几个变量有赋值的语句,也没有SCANF 从外界输入的语句。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式