两个高次多项式加法和乘法运算


    

    课程设计报告



    设计名称: 数结构课程设计
    设计题目: 两高次项式加法法运算
    学生学号:
    专业班级: 软件工程
    学生姓名:
    学生成绩:
    指导教师(职称): (副教授)
    课题工作时间: 20XX616 20XX627
    软件学院课程设计务书
    学生姓名

    学号

    专业班级
    软件工程
    设计题目
    设计程序已实现意两高次项式加法法运算
    容概: Microsoft Visual C++ 60环境运C语言编写运循环结构指针链表插入删运算等方法编写程序次调试纠错具体项式试验运行程序出结果

    文献资料:
    [1]尹宝林C育出版社20程序设计思想方法[M]机械工业出版社2011
    [2]黄明C语言课程设计[M]电子工业出版社2009
    [3]谭浩强C程序设计[M]清华学出版社2012
    [4]柴欣CC++程序设计[M] 河北学出版社2009
    [5]余苏宁王明福C++程序设计[M] 北京:高等教育出版社2010
    设计求:
    程序实现功:
    1输入建立项式
    2输出项式
    3两项式相加输出项式
    4两项式相输出积项式
    工作期限:设计工作20XX年6月16日20XX年6月27日止
    指导教师: 院长:
    日 期:20XX年6月16日

    软件学院课程设计进度安排表
    学生姓名: 学号: 专业: 软件工程 班级:
    起止日期

    备注
    6月16日~ 6月 17日
    务书收集阅读整理相关参考文献进行纳概括总结完成项目务背景介绍部分文字容

    6月18日~11月20日
    系统功设计模块设计系统体系结构构建

    6月21日~6月24日
    功模块编码实现系统功模块调试维护

    6月25日~6月26日
    系统功集成系统调试测试模板求撰写课程设计项目设计报告

    6月27日
    课程设计项目设计分组答辩提交课程设计项目设计报告相关文档进行成绩评定































    指导教师签名:
    20XX年6月16日
    成绩评定表
    学生姓名: 学号: 专业: 软件工程 班级:

    合计
    分值
    项分值
    评分标准
    实际分
    合计分
    时表现
    10
    10
    时参加设计指导违反纪律情况


    完成情况
    30
    20
    设计务书求完成全部务完整演示设计容符合求


    10
    设计容进行详细完整介绍指导教师提出问题进行正确回答

    报告质量
    35
    10
    报告文字通容翔实述充分完整立正确结构严谨合理报告字数符合相关求工整规范整齐划


    5
    课题背景介绍清楚综述分析充分

    5
    设计方案合理行证严谨逻辑性强具说服力

    5
    符号统图表完备符合规范求

    5
    整设计程进行全面总结出价值结结果

    5
    参考文献数量2篇格式符合求正文中正确引

    答辩情况
    25
    10
    规定时间设计容进行阐述言简意明重点突出点正确条理清晰


    15
    规定时间准确完整流利回答教师提出问题

    总评成绩: 分
    指导教师: (签字)
    日期:20XX 年6月 27 日


    摘:次课程设计中选择题目元项式加法法实现运C语言编写Microsoft Visual C++ 60环境运行元项式计算C语言设计元项式简单计算器够实现指数升序排列建立输出项式够完成两项式相加相减相运算结果输入功通设计元项式初步掌握软件开发程问题分析系统设计程序编码测试等基方法技提高综合运学理知识方法独立分析解决问题力加深常数结构理解强化逻辑思维力动手力巩固良编程惯掌握工程软件设计基方法续课程学坚实基础
    关键词:C语言指针链表循环元项式
    目录



    摘 II
    第章 课题背景 1
    11 设计课题 1
    12 课题背景意义 1
    13课题目求 1
    第二章 设计简介设计方案 2
    21 设计简介 2
    22设计方案 2
    第三章 详细设计 4
    31 存储结构 4
    32设计思路分析 4
    33详细设计 5
    第四章 设计结果分析 9
    41 测试数 9
    42运行程结果 9
    总结 13
    参考文献 14
    附录 程序源代码 15

    第章 课题背景
    11 设计课题
    设计程序实现意两高次项式相加相运算
    12 课题背景意义
    数结构门实践性计算机课程想学门课程仅需掌握理知识加强机实践通次课程设计求掌握较程序设计方法相应数结构选择应算法设计实现性分析等方面中加强课程基容理解时设计方法机操作等技科学作风方面受较系统严格锻炼次课程设计次锻炼力机会
    13课题目求
    课程设计实践性教学中重环节某课程基础涉课程相关方面门独立课程外特殊课程课程设计学学课程更全面学应理解掌握课程相关知识数结构门重专业基础课计算机理应核心基础课程数结构课程设计求数结构逻辑特性物理表示数结构选择应算法设计实现等方面加深课程基容理解时程序设计方法机操作等基技科学作风方面受较系统严格训练








    第二章 设计简介设计方案

    21 设计简介
    1 运动态链表结构实现元项式加法减法法运算分模块:输入模块输出模块(升幂)数处理模块(项式加减)程序模块
    2 程序执行程中加入汉字提示符者清楚明白操作该程序运行程序时起简洁序操作简单明
    3 程序执行时命令:
    ①创建两元项式
    ②输入第元项式项数
    ③次输入元项式系数指数
    ④相方式输入第二元项式
    ⑤数处理
    ⑥输出结果
    22设计方案
    1数结构设计
    节省存储空间存储项式中系数非零项程序链式存储结构
    2算法设计设计总体划分3模块
    函数模块程序入口实现函数调
    头文件模块定义类结构体
    函数模块数处理实现功
    3基操作:
    CreatPolyn(&Pm)
    操作结果:输入m项系数指数建立元项式P
    DestroyPolyn(&P)初始条件:元项式P已存
    操作结果:销毁元项式P
    PrintPolyn(P)初始条件:元项式P已存
    操作结果:印输出元项式P
    ValuePolyn(Polyn headint x)
    初始条件:元项式P已存
    操作结果:输入x值计算返回项式值
    AddPolyn(&Pa&Pb)
    初始条件:元项式PaPb已存
    操作结果:完成项式相加运算:PaPa+Pb销毁元项式PbSubtractPolyn(&Pa&Pb)
    初始条件:元项式PaPb已存
    操作结果:完成项式相减运算:PaPaPb销毁元项式PbMultiplyPolyn(&Pa&Pb)
    初始条件:元项式PaPb已存
    操作结果:完成项式相运算:PaPa×Pb销毁元项式Pb}ADT Polynomia
    }


    第三章 详细设计
    31 存储结构
    建立元项式计算机链表实现节省存储空间存储项式中系数非零项链表中结点存放项式系数非零项包含三域分存放该项系数指数指项式项结点指针创建元项式链表元项式运算中会出现种情况进行分析实现元项式相加相减操作
    存储结构定义:
    公头文件DS0h #include
    #include
    #include
    带头结点单链表存储结构:
    typedef struct Polynomial{
    float coef
    int expn
    struct Polynomial *next
    }*PolynPolynomial
    32设计思路分析
    解决项式相加相减相必须项式必须首先建立两项式里采链表方式存储链表结点结构体定义:
    系数coef
    指数expn
    指针域next
    运尾插法建立两单链表单链表Polyn pPolyn h分表示元项式aba+b求运算等单链表插入问题(Polyn p中结点插入单链表Polyn h中)项式结点须生成
    实现处理设pq2分指单链表polyapolyb前项较pq2结点指数
    列运算规:
    (1)p>expnexpn结点q2指结点应项式中项令指针q2移
    (2)p>expnq2>expn两结点中系数相加0时修改结点q2系数
    (3)p>expn>q2>expn结点p指结点应项式中项结点p插入结点q2前令指针p原链表移
    建立元项式指数降序排列输出项式元项式输入存储存中够完成两项式运算输出结果简运行流程图图31
    5
    4
    3
    2
    1
    菜单
    choose?
    Printpoly()
    建立项式
    Addpoly()
    相加
    SubtractPolyn
    相减
    ******退出******
    MultiplyPolyn

    图31 简运行流程图

    结 束
    开 始

    33详细设计
    函数
    int main()
    {
    int mnflag0
    float x
    Polyn pa0pb0pcpdpepf
    }
    void PrintPolyn(Polyn P) 输出项式ab
    Polyn AddPolyn(Polyn paPolyn pb) 求解建立项式a+b返回头指针
    Polyn SubtractPolyn(Polyn paPolyn pb) 求解建立项式ab返回头指针
    Polyn MultiplyPolyn(Polyn paPolyn pb) 求解建立项式a*b返回头指针
    基算法
    项式输入
    (1)功:进行运算项式输入输出
    (2)数流入:输入项式系数指数
    开始
    申请结点空间
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++









































    num
    输入项式项数



























































































































    指针数组temp[i]中(i1~num)
    输入项式项系数 x 指数 y

    输出已输入项式

    合类项

    结束


    否输入正确






















    图32 输入



    (3)数流出:合类项项式
    (4)程序流程图:项式输入流程图图32示
    (5) 代码段:
    建立头指针head项数m元项式 建立新结点接收数 调Insert函数插入结点
    Polyn CreatePolyn(Polyn headint m){
    int i
    Polyn p
    phead(Polyn)malloc(sizeof(struct Polynomial))
    head>nextNULL
    for(i0i{
    p(Polyn)malloc(sizeof(struct Polynomial))
    printf(请输入第d项系数指数i+1)
    scanf(f d&p>coef&p>expn)
    Insert(phead) 调Insert函数插入结点
    }
    return head
    }
    项式加法
    (1)功:两项式相加
    (2)数流入:输入函数
    (3)数流出:项式相加结果
    (4)测试点:两项式否空空提示重新输入否进行运算
    (5)代码段:
    Polyn AddPolyn(Polyn paPolyn pb) 求解建立项式a+b返回头指针
    { Polyn qapa>next
    Polyn qbpb>next
    Polyn headchcqc
    hc(Polyn)malloc(sizeof(struct Polynomial)) 建立头结点
    hc>nextNULL
    headchc
    while(qa||qb)
    { qc(Polyn)malloc(sizeof(struct Polynomial))
    switch(compare(qaqb))

    略四case语句

    }switch
    if(qc>coef0)
    {
    qc>nexthc>next
    hc>nextqc
    hcqc
    }
    else free(qc)相加系数0时释放该结点
    }while
    return headc
    }AddPolyn
    项式法
    (1)功:两项式相加
    (2)数流入:输入函数
    (3)数流出:项式相加结果
    (4)测试点:两项式否空空提示重新输入否进行运算
    (5)代码段:
    Polyn MultiplyPolyn(Polyn paPolyn pb) 求解建立项式a*b返回头指针
    { Polyn hfpf
    Polyn qapa>next
    Polyn qbpb>next
    hf(Polyn)malloc(sizeof(struct Polynomial)) 建立头结点
    hf>nextNULL
    for(qaqaqa>next)
    { for(qbpb>nextqbqbqb>next)
    { pf(Polyn)malloc(sizeof(struct Polynomial))
    pf>coefqa>coef*qb>coef
    pf>expnqa>expn+qb>expn
    Insert(pfhf) 调Insert函数合指数相项
    }
    }
    return hf
    }MultiplyPolyn
    第四章 设计结果分析
    41 测试数
    测试项式项式中项数两项三项四项项数系数指数正负测试结果正确误
    1 (x3+2x4+5x7)(6x8+9x11+10x12)
    2 (11x2+5x3+8x6+57x9)+(4x6+21x4+2x10)(2x10+57x9+12x6+21x4+5x3+11x2)
    3 (8x10+5x8+2x2+4x8)*(2x10+6x7+8x2+5x9+38x4)(16x20+40x19+18x18+93x17+54x15+304x14+1022x12+10x11+72x10+12x9+76x6+16x4)
    42运行程结果
    开始界面提示开始输入数建立项式图41示

    图41 开始界面
    输入数输入项式系数指数图42示

    图42 输入数













    回车键出现菜单界面户选择中意功执行图43示
    图43 菜单界面
    选择功1输出项式操作结果图示图44示

    图44 输出项式


    选择功2两项式相加输出项式图45示

    图45 项式相加
    选择功3两项式相输出积项式图46示

    图46 项式相











    选择功4意键退出程序图47示

    图47 退出程序
    总结
    次课程设计学期学数结构知识巩固应C++更进步解然设计程中遇困难感觉收获挺扩充知识点 通周课程设计意识学方法重性学中学会动学会学什东西指细心观察问什动手查查会问题抬头google样学手东西会更





































    参考文献
    [1]尹宝林C育出版社20程序设计思想方法[M]机械工业出版社2011
    [2]黄明C语言课程设计[M]电子工业出版社2009
    [3]谭浩强C程序设计[M]清华学出版社2012
    [4]柴欣CC++程序设计[M] 河北学出版社2009
    [5]余苏宁王明福C++程序设计[M] 北京:高等教育出版社2010
    附录 程序源代码
    #include
    #include
    typedef struct Polynomial
    { float coef
    int expn
    struct Polynomial *next
    }*PolynPolynomial Polyn结点指针类型
    void Insert(Polyn pPolyn h)
    { if(p>coef0) free(p) 系数0话释放结点
    else
    { Polyn q1q2
    q1hq2h>next
    while(q2&&p>expnexpn) 查找插入位置
    { q1q2
    q2q2>next
    }
    if(q2&&p>expnq2>expn) 指数相相合
    { q2>coef+p>coef
    free(p)
    if(q2>coef) 系数0话释放结点
    { q1>nextq2>next
    free(q2)
    }
    }
    else 指数新时结点插入
    { p>nextq2
    q1>nextp
    }
    }
    }Insert
    Polyn CreatePolyn(Polyn headint m) 建立头指针head项数m元项式
    { int i
    Polyn p
    phead(Polyn)malloc(sizeof(struct Polynomial))
    head>nextNULL
    for(i0i{ p(Polyn)malloc(sizeof(struct Polynomial)) 建立新结点接收数
    printf(请输入第d项系数指数i+1)
    scanf(f d&p>coef&p>expn)
    Insert(phead) 调Insert函数插入结点
    }
    return head
    }CreatePolyn
    void DestroyPolyn(Polyn p) 销毁项式p
    { Polyn q1q2
    q1p>next
    q2q1>next
    while(q1>next)
    { free(q1)
    q1q2 指针移
    q2q2>next
    }
    }
    void PrintPolyn(Polyn P)
    { Polyn qP>next
    int flag1 项数计数器
    if(q) 项式空输出0
    { putchar('0')
    printf(\n)
    return
    }
    while (q)
    { if(q>coef>0&&flag1) putchar('+') 系数0第项
    if(q>coef1&&q>coef1) 系数非11普通情况
    { printf(gq>coef)
    if(q>expn1) putchar('X')
    else if(q>expn) printf(X^dq>expn)
    }
    else
    { if(q>coef1){
    if(q>expn) putchar('1')
    else if(q>expn1) putchar('X')
    else printf(X^dq>expn)
    }
    if(q>coef1)
    { if(q>expn) printf(1)
    else if(q>expn1) printf(X)
    else printf(X^dq>expn)
    }
    }
    qq>next
    flag++
    }while
    printf(\n)
    }PrintPolyn
    int compare(Polyn aPolyn b)
    { if(a&&b)
    { if(b||a>expn>b>expn) return 1
    else if(a||a>expnexpn) return 1
    else return 0
    }
    else if(a&&b) return 1 a项式已空b项式非空
    else return 1 b项式已空a项式非空
    }compare
    Polyn AddPolyn(Polyn paPolyn pb) 求解建立项式a+b返回头指针
    { Polyn qapa>next
    Polyn qbpb>next
    Polyn headchcqc
    hc(Polyn)malloc(sizeof(struct Polynomial)) 建立头结点
    hc>nextNULL
    headchc
    while(qa||qb)
    { qc(Polyn)malloc(sizeof(struct Polynomial))
    switch(compare(qaqb))
    { case 1
    { qc>coefqa>coef
    qc>expnqa>expn
    qaqa>next
    break
    }
    case 0
    {
    qc>coefqa>coef+qb>coef
    qc>expnqa>expn
    qaqa>next
    qbqb>next
    break
    }
    case 1
    {
    qc>coefqb>coef
    qc>expnqb>expn
    qbqb>next
    break
    }
    }switch
    if(qc>coef0)
    {
    qc>nexthc>next
    hc>nextqc
    hcqc
    }
    else free(qc)相加系数0时释放该结点
    }while
    return headc
    }AddPolyn
    Polyn MultiplyPolyn(Polyn paPolyn pb) 求解建立项式a*b返回头指针
    { Polyn hfpf
    Polyn qapa>next
    Polyn qbpb>next
    hf(Polyn)malloc(sizeof(struct Polynomial)) 建立头结点
    hf>nextNULL
    for(qaqaqa>next)
    { for(qbpb>nextqbqbqb>next)
    { pf(Polyn)malloc(sizeof(struct Polynomial))
    pf>coefqa>coef*qb>coef
    pf>expnqa>expn+qb>expn
    Insert(pfhf) 调Insert函数合指数相项
    }
    }
    return hf
    }MultiplyPolyn
    int main()
    {
    int mnflag0
    float x
    Polyn pa0pb0pcpdpepf 定义式头指针papb前赋初值NULL
    printf(请输入a项数)
    scanf(d&m)
    paCreatePolyn(pam) 建立项式a
    printf(请输入b项数)
    scanf(d&n)
    pbCreatePolyn(pbn) 建立项式b
    输出菜单
    printf(********************操作提示**************************\n)
    printf(\t 1输出项式ab\n)
    printf(\t 2建立项式a+b\n)
    printf(\t 3建立项式a*b\n)
    printf(\t 4退出\n*******************************************\n)
    for(flag0)
    {
    printf(执行操作)
    scanf(d&flag)
    if(flag1){
    printf(项式a:)PrintPolyn(pa)
    printf(项式b:)PrintPolyn(pb)continue
    }
    if(flag2)
    {
    pcAddPolyn(papb)
    printf(项式a+b:)PrintPolyn(pc)
    DestroyPolyn(pc)continue
    }
    if(flag3){
    pfMultiplyPolyn(papb)
    printf(项式a*b:)PrintPolyn(pf)
    DestroyPolyn(pf)continue
    }
    if(flag4) break
    if(flag<1||flag>8) printf(Error\n)continue
    }for
    DestroyPolyn(pa)
    DestroyPolyn(pb)
    return 0 }

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    任意两个高次多项式的加法和乘法运算课程设计

     课程设计报告 设计名称: 数据结构课程设计 设计题目: 任意两个高次多项式的加法和乘法运...

    5年前   
    724    0

    一元稀疏多项式加法运算实验报告

    实验题目 一元多项式的加法运算班级:数学班 姓名: 学号: 日期:2012一 、 需求分析1、)程序的主要功能:1.1 输入两个稀疏的一元n次多项式。1.2 计算两个多项式的和...

    1年前   
    296    0

    分数乘法混合运算和整数乘法的运算定律推广到分数乘法

    分数乘法混合运算和整数乘法的运算定律推广到分数乘法课题整数乘法运算定律推广到分数课型新授课设计说明本节课的内容与旧知联系,新课前学生对整数,小数混合运算的运算顺序以及整数乘法的运算定律已经十分...

    4年前   
    1167    0

    乘法运算律及简便运算其次课时

    乘法运算律及简便运算其次课时 乘法运算律及简便运算其次课时 “自学互帮导学法”课堂教学设计 课 题 乘法运算律及简便运算 课时 其次课时 课 型 新授课 修改...

    1年前   
    379    0

    加法运算定律教学设计

    1.通过尝试解决实际问题,观察、比较,发现并概括加法交换律、加法结合律。2.初步学习用加法运算定律进行简便计算,并用来解决实际问题。3.培养学生的观察能力、概括能力和语言表达能力。

    4年前   
    765    0

    加法运算定律的应用

    加法运算定律的应用小学数学 人教2011课标版 2015年度 分享到: 李月华指导教师:无地区:湖北省 - 襄阳市 - 襄州区学校:襄阳区双沟镇双南村小学发布时间:2016-05-29 20:...

    3年前   
    651    0

    加法的运算定律教学反思

    加法的运算定律教学反思一、将现实的问题情境转化成数学问题。本单元的主要内容是运算定律,可以说运算定律是运算的灵魂和核心。它是小学阶段十分重要和基本的内容。由于四年级的学生的认知和思维水平还比较...

    3个月前   
    134    0

    加法原理与乘法原理

    三年级第二学期数学思维训练11班级: 姓名: 学号: 第十一讲——加法原理与乘法原理【例题讲解】1、 从上海到北京,可以坐火车,也可以坐汽车,还可以乘飞机,...

    3年前   
    893    0

    数学七年级课时训练1.4 第3课时 多项式与多项式的乘法

    知识点 多项式与多项式相乘1.(2x+y)(x-y)=2x•    +y•     ——乘法对加法的分配律=2x•    +2x•    +y•    +y•    ——单项式乘多项式...

    3年前   
    524    0

    6.2.1 向量的加法运算同步练习 (word含解析)

    6.2.1 向量的加法运算(同步检测)1.在四边形ABCD中,+=,则四边形ABCD是 (  )A.梯形      B.矩形 C.正方形 D.平行四边形2.(多选)对于任意一...

    4个月前   
    156    0

    加法运算定律的运用 评课稿

    《加法运算定律的运用》评课稿                          ...

    2年前   
    601    0

    乘法运算律及简便运算第一课时

    乘法运算律及简便运算第一课时 乘法运算律及简便运算第一课时 “自学互帮导学法”课堂教学设计 课 题 乘法运算律及简便运算 课时 第一课时 课 型 新授课 修改...

    1年前   
    323    0

    乘法运算律及简便运算第三课时

    乘法运算律及简便运算第三课时 乘法运算律及简便运算第三课时 “自学互帮导学法”课堂教学设计 课 题 乘法运算律及简便运算 课时 第三课时 课 型 新授课 修改...

    1年前   
    315    0

    第三单元 混合运算 第一课时 加减法和乘法混合运算

    在解决具体问题过程中,掌握乘法和加减法的混合运算,知道运算顺序;

    5年前   
    1293    0

    二次根式的乘法

    二次根式的乘法 二次根式的乘法 教学建议 学问结构: 重点难点分析: 本节的教学重点是利用积的算术平方根的性质进行二次根式的计算和化简.积的算术平方根的性质是本节的中心...

    1年前   
    405    0

    二次根式的混合运算

    二次根式的混合运算 二次根式的混合运算 教学建议 学问结构 重难点分析 本节课的重点是二次根式的加、减、乘、除、乘方、开方的混合运算及分母有理化。它是以二次根式的概念...

    1年前   
    510    0

    小学数学第八册第三单元加法运算定律 教学反思

    《加法运算定律》教学反思 本节课的新知识在以前的数学学习中都有相应的认知基础,反过来,学了本节的新知识又可以促进学生,更深入认识原来学过的知识和方法。教学时,充分利用了主题图的故事...

    3个月前   
    100    0

    第2课时 加法运算定律的应用「教案」

    第2课时 加法运算定律的应用▷教学内容教科书P20例3,完成P20“做一做”,P22~23“练习六”第2、4、7题。▷教学目标1.通过学习,能正确、自主地运用加法交换律和结合律进行简便计算。2...

    2年前   
    594    1

    小学数学第八册第三单元加法运算定律教学设计

    加法运算定律 详案    1学习内容:P28/例1(加法交换律)P29/例2(加法结合律)课时1课时学习目标:1.引导学生探究和理解加法交换律、结合律。2.培养学生根据具体情...

    3年前   
    459    0

    小学数学第八册第三单元加法运算定律说课稿

    《加法运算定律》说课稿 一、说教材。(一)教学内容:我说课的内容是义务教育课程标准实验教科书,小学数学第八册第三单元第一小节“加法运算定律”中的第1课时的内容,其内容包括:完成第28页...

    3个月前   
    98    0

    文档贡献者

    文***品

    贡献于2019-06-24

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!

    该用户的其他文档