呵呵,问一个c语言里函数的嵌套调用的问题。讲得详细好懂答对了奖二十分。

用弦截法求方程x^3-5x^2+16x-80=0的根。
#include<math.h>
float f(float x)
{
float y;
y=((x-5.0)*x+16.0)*x-80.0;
return(y);
}
float xpoint(float x1,float x2)
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return(y);
}
float root(float x1,float x2)
{
int i;
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if (y*y1>0)
{y1=y;
x1=x;}
else
x2=x;
}while(fabs(y)>=0.0001);
return(x);
}
main( )
{
float x1,x2,f1,f2,x;
do
{
printf(“input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}while(f1*f2>=0);
x=root(x1,x2);
printf("A root of equation is%8.4f”,x);
}

这是谭浩强书上的题,书上已经讲了算法,N-S流程图,及分别用的几个函数。但我看得好模糊,没有丝毫头绪。请问看书都这样,怎么学习进行下去。

f() 函数返回的就是方程左边的值,在主函数里面,如果 f(x1) 和 f(x2) 异号就停止输入x1和x2
然后执行root函数,root() 函数里面调用的是类似二分法那样吧,不过它不是用(x1+x2)/2来作为下一个试验的值,而是用(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1))这个公式,忘记叫什么公式了,也可以用这个方法,xpoint() 函数就实现了这个功能。在root 函数里面,y保存的是误差,while(fabs(y)>=0.0001);
这句就是表示如果误差小于0.0001就跳出循环,得到结果x。
因此 x 就是最终的方程的解

最后说一句,这个是个一元三次方程,有三个解,但这个只能求出一个解
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-24
你首先要了解什么是弦截法,说白了就是一个逐渐逼近求近似解的过程,当满足一定精度后,就得出近似解,学C语言,要多读好程序,多写程序。十万行代码后,你就是高手了!
第2个回答  2011-11-25
你这就是在main里调用root啊 只要参数传递正确就可以了啊
看看传值还是传地址的区别

C语言函数嵌套问题
在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内, 不能再定义另一个函数, 即不能嵌套定义.在例子中,没有嵌套定义的.int max(int a,int b){ if(a>b)return a;else return b;}\/\/这是在定义max 而main()函数中,void main(){ int max(in...

C语言函数的嵌套调用是什么呢?
在编程中,函数的调用是一个基础概念。当一个函数通过调用另一个函数来执行时,这称为函数的嵌套调用。这一过程在C语言中特别常见且灵活,因为C语言对嵌套调用的限制较少。实现函数嵌套调用的关键在于理解函数调用的过程。当一个函数被调用时,当前的程序执行流将暂时中断,进入被调用函数的代码执行。完成...

谁能帮我分别举一个例子,是关于函数的嵌套调用和递归调用的(要每一步...
递归调用:在调用一个函数的过程中直接或间接地调用该函数本身,称为函数的递归调用。在编写递归调用程序时注意:(1)递归程序算法:即如何实现其递归;(2)递归调用的结束条件:避免无止境递归调用造成死循环。所以递归调用应为条件递归调用:if (条件) 递归调用 else ……【例7.11】用递归算法编程求...

举个例子 教教我C语言函数的嵌套调用
} 还有一个函数 void forexample(){ ...void example();example();} 就如你看到的,void forexample()函数里面,有用到example()函数。这就是你想知道的函数嵌套。满意请采纳,如果还有问题,可以加我百度HI

C语言函数嵌套
include <stdio.h> void b(){ printf("Hello World!\\n");} void a(){ b();} void main (){ a();} 这样就OK了,只要遵循一个原则,函数在被调用前必须是已经声明过的。因为编译器是要先知道有这个东西存在(已经被定义或声明过),才能通过编译。如果函数b在函数a之前定义(如上),则...

函数调用的嵌套调用
C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。 图表示了两层嵌套...

关于C语言函数嵌套的问题。4个数中的最大者
\/\/同第二步 m 为 a b c 中最大跟d比较 返回为a b c d 中最大值 如果你的问题是 方程:int max2(int a,int b);此中 参数为a,b 为何能处理其他 你需要再对方程概念加深理解 这里的变量值是代表方程本身的参数 你可以起任何名字 不用非要是 a,b 代表传入两个int数据类型 max4中的...

(C语言)谁给我解释一下,书本上的这段小代码!关于函数调用嵌套的!
首先,我觉得你理解上有点问题,子函数与子函数之间,干嘛要强调谁在谁的里面?函数与函数之间的关系应该是调用,sum+=power(i,k)[sum_power(int k,int n)里面],就是函数运行到了这里就调用power()函数,就是走到这里,就带着i,k,两个变量,滚到sum_power(int k,int n)里面去运行,把...

C语言for循环嵌套延时问题
这个延时函数是个指令延时,指令多了,延时时间就长。for(x=0;x<120;x++) 这个循环里,每一次循环,都会有一个 加一 和 判断跳转指令。X为char 时是单字节,这些指令都是一条指令,当改为 int时 x就成了双字节了,这些操作就需要多几条指令来完成。这就相当于,每次循环的时间加长了。

c语言中函数指针作为参数与函数的嵌套
您好,针对这个问题 Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e))函数中第2个参数是一个指向函数的指针,这样做的目的是为了程序的灵活性。试想如果给你一个整型数100,要求分别按照10进行、16进制输出,你可以写一个输出10进制函数与输出16进制函数,当你有需要输出16进制时,只...

相似回答
大家正在搜