1、 一元多项式计算一元多项式计算 班级: 信息本 1002 学号: 09 姓名: 班级: 信息本 1002 学号: 26 姓名: 班级: 信息本 1002 学号: 34 姓名: 班级: 信息本 1002 学号: 41 姓名: I 目目 录录 一、课题任务一、课题任务. 1 二、概要设计二、概要设计. 1 三、详细设计三、详细设计. 2 四、调试分析四、调试分析. 6 五、测试结果五、测试结果. 6 六、课程设计总结六、课程设计总结 9 七、参考文献七、参考文献. 9 八、八、附录附录 10 1 一、一、课题课题任务任务 功能功能: 1) 能够按照指数降序排列建立并输出多项式; 2) 能够完成两个
2、多项式的相加,并将结果输出; 3) 能根据输入的多项式及变量的值,能进行计算。并输出计算结果。 4) 能对多个输入的表达式按照指数大小排序输出。 二、二、概要设计概要设计 一元多项式计算系统一元多项式计算系统 降序排列建 立并输出多 项式 多项式的相 加减并输出 结果 输入的多项 式及变量的 值计算 多个表达式 按照指数大 小排序输出 按 指 数 排 序 建 立 多 项 式 相 减 建 立 多 项 式 相 加 计 算 多 项 式 建 立 多 个 多 项 式 输出多式项或计 算值 排 序 后 输 出 多 个 多 项 式 排 序 2 三、详细设计三、详细设计 一元多项式定义系数和指数结构如下: c
3、oef 域-存放结点的系数值 expn 域-存放结点的指数值 next 域-存放结点的直接后继的地址(位置)的指针域(链域) 一元多项式单链表存储结构: typedef struct term float coef; /系数 int expn; /指数 struct term *next; term; 有了链表特定的数据类型 term,接下来就需要建立这个链表。这里我们自定义一个构 造函数 CreatePoly()来构造链表。首先定义一个 term 型的指针变量 h=p 作为头结点,存 储多项式的信息(项数) ,为 h 分配存储空间建立一个头结点并为其数据域赋值,分配存储 空间用 malloc
4、()函数来实现;这时输入多项式的项数 m,先给 p 的 coef 赋值为 0,此时利用 一个 for 循环将 p 链表的 coef 与 expn 值从键盘输入,用 m 来控制循环的次数,若该从键盘 输入的 coef 值不为 0, 则将该数值插入链表新建链表 q, 用 malloc () 分配给 p 空间, p=p-next 继续从键盘输入 coef 与 expn 的值,直到满足 p-next=null,输入完成,返回链表 q 即为多项 式的系数与指数,创建多项式完成。 在处理多项式相加的问题上, 由于事先建立的多项式函数已经按指数大小排好序, 那么 多项式的相加就变得不那么复杂了,我们只要找出两个相加多项式指数相同的项进行合并, 即将指数相同的项的系数相加,其它的保持不变存好即可。而查找指数相同的项,只要按链 表从头到尾进行扫描,若发现相同,则两个同时往下移,否则只将其中指数较大的往下移。 假若两个指数相同的项进行合并时,其系数相加值为 0,则消除该项,继续下去。 在处理输入的多项式及变量的值计算结果的问题时,定义一个 C()函数实