1、沈阳理工大学机械工程学院计 算 机 程 序 训 练 任 务 书姓名 崔晓光班级 08010131学号 18 日期:2010/06/15目 录一 设计题目. .3 二 设计要求.3三 技术要求.3(1)题目内容的描述.3(2)应用程序详细说明.3(3)输入数据类型、格式和内容限制.4(4)主要模块的算法描述.4(5) 结束语.6(6) 程序的源代码清单.6一 设计题目 求3次方程的根二 设计要求 已知有一方程ax3+bx2+cx+d=0,方程系数a,b,c,d由键盘输入(要求a,b,c,d都不能等于零,如果有零从新输入),求其3个根。三 技术要求 1 按照给定题目,独自设计程序,上机调试通过。2。

2、 设计报告(1)题目内容描述:设计一程序算出一元三次方程的根(2)应用程序功能详细说明#include : 把使用数学库函数时所需的信息包含进来;#include :控制台的输入输出;float a, b, c, d : 定义外部变量,是全局都可以使用;float f(float) : 定义f函数,以实现f(x)=ax3+bx2+cx+d ;float xpoint(float x1 ,float x2) :定义xpoint函数,求出弦与x轴的交点;float root :定义roop函数,求近似根;do. While : 循环;void main() :主函数;fabs :求绝对值的函数,对。

3、实数型求绝对值的标准函数;while(fabs(y)= ) : 设定精度;if() : 判定所给定的条件是否满足根据判断的结果(真或假)决定执行给出两种操作之一;while() :用来实现“当型”循环结构;printf() :printf 的一般形式为printf(格式控制,输出列表)例如:printf(“%d,%cn”,i,c),括号内包括两部分:a格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:a:格式说明。格式说明由“%d”和格式字符组成,如%d,%f等。他的作用是将输出的数据转换为制定的格式输出。格式说明总是由“%”字符开始的。b:普通字符。普通字符即需要鸳。

4、鸯输出的字符。例如上面printf幻术中双撇号没的逗号,空格和换行符。b“输出列表”是需要输入的一些数据,可以用表达式。scanf() : 一般形式:scanf(格式控制,地址列表)“格式控制”的含义同printf函数;“地址列表”是由若干个地址组成的列表,可以是变量的地址,或字符串的首地址。格式说明:于printf函数中的格式说明相似,以%开始,以一个格式字符结束,中间可插入附加的字符;getch() : 字符输入函数(3)输入数据类型、格式和内容限制a.输入数据类型:浮点型数据float格式:比特(位)数32 4字节内容限制:7位有效数字b.输入数据类型:字符型数据 n格式:以开头内容限制。

5、:换行符,在屏幕上不显示(4)主要模块的算法描述a.程序N-S流程图输入a, b, c, d,确定一元三次方程标准形式b.语言描述原理 1. 取两个不同点x1,x2,如果f(x1)和f(x2)符号相反,则(x1,x2)区间内必有一个根。如果f(x1)与f(x2)同符号,则应改变x1,x2,直到f(x1)、f(x2)异号为止。注意x1、x2的值不应差太大,以保证(x1,x2)区间内只有一个根。 2. 连接(x1,f(x1)和(x2,f(x2)两点,此线(即弦)交x轴于x。 3. 若f(x)与f(x1)同符号,则根必在(x,x2)区间内,此时将x作为新的x1。如果f(x)与f(x2)同符号,则表示。

6、根在(x1,x)区间内,将x作为新的x2。4. 重复步骤 (2) 和 (3) , 直到 f(x) 为止, 为一个很小的数, 例如 10-6. 此时认为 f(x)0 。函数来实现个部分的功能1. 用函数f(x)代表x的函数:ax3+bx2+cx+d=02. 程序从main函数开始执行。先执行一个do.while循环,其作用是输入x1和x2,判别f(x1)和f(x2)是否异号。如果不是异号,则重新输入x1和x2,知道满足f(x1)和f(x2)异号为止。3. 用函数调用xpoint (x1,x2)来求(x1,f(x1)和(x2,f(x2)的连线与x轴的交点x的坐标。4. 用函数调用root (x1,。

7、x2)来求(x1,x2)区间的 那个实根。显然,执行root函数过程中要用到函数xpoint,而执行xpoint函数过程中要用到f函数。Main函数 root函数 xpoint函数 f函数 调用root函数 调用xpoint函数 调用f函数 输出根x结束(5) 结束语通过此次程序设计,更深的体会到了c程序的强大的功能,和这门语言的重要性,在编程中遇到好多困难,也才更深的认识到自己学习力度不够。通过查资料,对指针的使用才有了更深刻的了解,还有对的应用有了新的认识。(6) 程序的源代码清单#include #include int a,b,c,d; /定义外部变量,使全局可以调用,生成函数f(x)。

8、就是生成方程y=ax3+bx2+cx+dfloat f(float x) /x函数float y;y=a*x*x*x+b*x*x+c*x+d;return(y);/生成浮点数y 计算式 y=(x1*f(x2)-x2*f(x1)/(f(x2)-f(x1)float xpoint(float x1,float x2) /求弦与x轴交点坐标float y;y=(x1*f(x2)-x2*f(x1)/(f(x2)-f(x1);return y;/求根当y的绝对值小于0.0001时返回xfloat root(float x1,float x2) /求根函数float x,y,y1;y1=f(x1); /y。

9、1为x1纵坐标dox=xpoint(x1,x2); /求x1与x2之间弦与x轴交点赋值于xy=f(x); /代入方程中求得yif(y*y10) /判断y与y1是否同号x1=x;y1=y;elsex2=x;while(fabs(y)=0.0001); /设定精度return(x);void main() /主函数float x1,x2,f1,f2,x;scanf(%d,%d,%d,%d,&a,&b,&c,&d);/定义变量,获取abcd常量值doprintf (input x1,x2:n);scanf(%f %f,&x1,&x2); /获取x1,x2值f1=f(x1);f2=f(x2);while(f1*f2=0); /do.while函数为了得到x1与x2的函数值为异号,当f1*f20时跳出循环,这样x1 x2中才有根x=root(x1,x2); /将x1 x2送到求根函数中返回值赋到x中, 得出根printf(A root of equalation is %8.4fn,x。