C语言课程设计一元多项式.doc
《C语言课程设计一元多项式.doc》由会员分享,可在线阅读,更多相关《C语言课程设计一元多项式.doc(24页珍藏版)》请在咨信网上搜索。
课程设计说明书 NO.1 一元多项式计算系统 1、课程设计目的 (1)较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧。 (2)较熟练地掌握在系统上编辑、编译、连接和运行C程序的方法。 (3)通过设计一个完整程序,掌握数据结构的算法编写、类C语言算法转换成C程序并上机调试的基本方法。 2、课程设计方案论证 2.1 设计思路 2.1.1问题描述: 设计一个稀疏多项式简单计算器。用户输入两个多项式的项数、系数与指数,计算加减等的结果。 2..1.2功能设计: 提示用户输入两个多项式A和B,输入形式为: 1) 先输入多项式A的项数, 2) 回车, 3) 输入多项式A第一项的系数,每一项按照先输入系数, 4) 空格或回车; 5) 输入多项式A第一项的指数, 6) 继续输入多项式A的其他项,输入方式与上同; 7) 再建立多项式B,数据输入方式与建立多项式A相同。 沈 阳 大 学 课程设计说明书 NO.2 每输入一个数字,则计算出相应的值并输出,然后继续输入功能选择项。 一元多项式计算 输入多项式A和B 计算多项式A+B 计算多项式A-B 重置多项式A和B 图1:功能模块图 沈 阳 大 学 课程设计说明书 NO.3 LINE SubLINE(LINE s,LINE g)/*求多项式A-B*/ 开始 LINE p1,p2,heads;p1=g;p2=g->next While(p2) p2->coef*=-1; p2=p2->next; head=AddLINE p2=p1->next for(p2=p1->next;p2;p2=p2->next) p2->coef=-1 p2=p2->next renturn N N Y Y 图2:多项式差流程图 沈 阳 大 学 课程设计说明书 NO.4 void DestroyLINE(LINE p) /*销毁多项式*/ 图3:销毁多项式流程图 开始 LINE q1,q2;q1=p->next q1==NULL renturn q2=q1->next q1->next delete q1;q1=q2;q2=q2->next 结束 N N Y Y 沈 阳 大 学 课程设计说明书 NO.5 两个多项式相乘时(假设第一个为m项,第二个为n项)只要第一个多项式的每一项的系数乘以第二个多项式每一项的系数,指数加上第二个多项式的指数。可以得到m个新的多项式。然后把这m个多项式按照指数相同的进行相加。合并成一个多项式即可。 假设有两个一元多项式: P1(X) = X^2 + 2X + 3 P2(X) = 3X^3 + 10X + 6 计算它们的和: P1(X) + P2(X) = (X^2 + 2X + 3) + (3X^3 + 10X + 6) = 3X^3 + 1X^2 + 12X^1 + 9 部分代码描述如下: for(;qa;qa=qa->next) { for(qb=pb->next;qb;qb=qb->next) { qc=new Polynomial; qc->coef=qa->coef*qb->coef; qc->exp=qa->exp+qb->exp; InsertNode(qc,headf); } } 沈 阳 大 学 课程设计说明书 NO.6 2.2 源程序清单 #include<stdio.h> #include<ctime> #include<stdlib.h> typedef struct line { float coef; int exp; line *next; }*LINE; void PrintLINE(LINE P); void Insert(LINE p,LINE head); LINE CreateLINE(LINE head,int m) ; void DestroyLINE(LINE p); int comsre(LINE a,LINE b); LINE AddLINE(LINE s,LINE g); LINE SubLINE(LINE s,LINE g); #include<math.h> void PrintLINE(LINE P) { LINE q=P->next; int flag=1; if(!q) { putchar('0'); printf("\n"); return; } while(q) { if(q->coef>0&&flag!=1) 沈 阳 大 学 课程设计说明书 NO.7 putchar('+'); if(q->coef!=1&&q->coef!=-1) { printf("%g",q->coef); if(q->exp==1) putchar('X'); else if(q->exp) printf("X^%d",q->exp); } else { if(q->coef==1) { if(!q->exp) putchar('1'); else if(q->exp==1) putchar('X'); else printf("X^%d",q->exp); } if(q->coef==-1) { if(!q->exp) printf("-1"); else if(q->exp==1) printf("-X"); else printf("-X^%d",q->exp); } 沈 阳 大 学 课程设计说明书 NO.8 } q=q->next; flag++; } printf("\n"); } void InsertNode(LINE p,LINE head) { if(p->coef==0) delete p; else { LINE q1,q2; q1=head; q2=head->next; while(q2!=NULL&&p->exp<q2->exp) { q1=q2; q2=q2->next; } if(q2!=NULL&&p->exp==q2->exp) { q2->coef+=p->coef; delete p; if(!q2->coef) { 沈 阳 大 学 课程设计说明书 NO.9 q1->next=q2->next; delete q2; } } else { p->next=q2; q1->next=p; } } } LINE CreateLINE(LINE head,int m) { LINE p; p=head=new line; head->next=NULL; for(int i=0;i<m;i++) { p=new line; printf("请输入第%d项的系数与指数(空格或回车隔开):",i+1); scanf("%f%d",&p->coef,&p->exp); InsertNode(p,head); } return head; } int Comsre(LINE a,LINE b) 沈 阳 大 学 课程设计说明书 NO.10 { if(a&&b) { if(!b||a->exp>b->exp) return 1; else if(!a||a->exp<b->exp) return -1; else return 0; } else if(!a&&b) return -1; else return 1; } void DestroyLINE(LINE p) { LINE q1,q2; q1=p->next; if(q1==NULL) return ; q2=q1->next; while(q1->next) { 沈 阳 大 学 课程设计说明书 NO.11 delete q1; q1=q2; q2=q2->next; } } LINE AddLINE(LINE s,LINE g) { LINE qa=s->next; LINE qb=g->next; LINE heada,hc,qc; hc=new line; hc->next=NULL; heada=hc; while(qa||qb) { qc=new line; switch(Comsre(qa,qb)) { case 1: { qc->coef=qa->coef; qc->exp=qa->exp; qa=qa->next; break; } case 0: { 沈 阳 大 学 课程设计说明书 NO.12 qc->coef=qa->coef+qb->coef; qc->exp=qa->exp; qa=qa->next; qb=qb->next; break; } case -1: { qc->coef=qb->coef; qc->exp=qb->exp; qb=qb->next; break; } } if(qc->coef!=0) { qc->next=hc->next; hc->next=qc; hc=qc; } else delete qc; } return heada; } LINE SubLINE(LINE s,LINE g) { LINE p1,p2,heads; 沈 阳 大 学 课程设计说明书 NO.13 p1=g; p2=g->next; while(p2) { p2->coef*=-1; p2=p2->next; } heads=AddLINE(s,p1); for(p2=p1->next;p2;p2=p2->next) p2->coef*=-1; return heads; } int main() { time_t t; time(&t); printf("\t§输出:各种运算后的结果\t\t\t\t\n"); printf("━━━━━━━━━━━━━━━━━━━━━━%s",ctime(&t)); int m,n,i; LINE s=0,g=0,pc,pd; printf("请输入多项式A项数:"); scanf("%d",&m); s=CreateLINE(s,m); printf("请输入多项式B项数:"); scanf("%d",&n); g=CreateLINE(g,n); printf("\t\t\t【功能选择项】\n\t≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n"); printf("\t║ 1.输出多项式A和B ║\t2.计算多项式A+B ║\n"); printf("\t║ 3.计算多项式A-B ║\t4.重新创建多项式║\n"); printf("\t║ 5.退出 ║\t ║\n"); 沈 阳 大 学 课程设计说明书 NO.14 printf("\t≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n"); do{ printf("\t请输入选择:"); scanf("%d",&i); switch(i) { case 1: { printf("\t多项式A=:"); PrintLINE(s); printf("\t多项式B=:"); PrintLINE(g); break; } case 2: { pc=AddLINE(s,g); printf("\tA+B=:"); PrintLINE(pc); DestroyLINE(pc); break; } case 3: { pd=SubLINE(s,g); printf("\tA-B=:"); PrintLINE(pd); DestroyLINE(pd); break; } 沈 阳 大 学 课程设计说明书 NO.15 case 4: { printf("请输入多项式A项数:"); scanf("%d",&m); s=CreateLINE(s,m); printf("请输入多项式B项数:"); scanf("%d",&n); g=CreateLINE(g,n); break; } case 5: { printf("欢迎再次使用!\n"); system("pause"); break; } default: { printf("\t输入错误!!!\n"); break; } } }while(i!=5); DestroyLINE(s); DestroyLINE(g); return 0; } 沈 阳 大 学 课程设计说明书 NO.16 3、课程设计运行结果与分析 图4:初始界面 沈 阳 大 学 课程设计说明书 NO.17 图5:功能菜单 沈 阳 大 学 课程设计说明书 NO.18 输入1,输出多项式A和B 图6:输出功能 沈 阳 大 学 课程设计说明书 NO.19 输入2:求多项式A与B的和 图7:多项式和的计算 沈 阳 大 学 课程设计说明书 NO.20 输入3:求多项式A和B的差 图8:多项式差的计算 沈 阳 大 学 课程设计说明书 NO.21 输入4:重新输入多项式 图9:重置多项式 沈 阳 大 学 课程设计说明书 NO.22 输入5:退出系统 图10:退出 沈 阳 大 学 课程设计说明书 NO.23 4、课程设计体会 一学期的时间,学完了数据结构,接下来就是要学以致用,做课程设计。 虽然数据结构是一门公认的比较难的课程,自己学起来也觉得有些吃力,但在本次课程设计之前,我系统地把教科书复习了一遍,大大加深了对各种数据结构的理解,运用起来更加自如。不断地翻阅各种参考书,以及在老师和同学的帮助下,基本上考虑到了所有的边界情况,反复测试各种类型的数据,强化程序的健壮性,最终顺利完成了本次课程设计。 完成设计后,我觉得收获不少,首先是自己首次应用所学知识做出了这个一元稀疏多项式计算器程序,以前从未做过这样大(这是对我而言,在专业人仕看来是小菜一碟)的程序,多少心里有点甜美的感觉;再次是自己本次所写的程序基本上考虑到了所有的特殊情况,程序运行不管输入什么数据都不会有差错,这对个人来讲是一个很大的进步。 完成设计是在一定时间内完成的,在完成这个设计时,我做得显然有一些紧迫,我想是没合理安排好时间和开始态度不正确所致,做完后我觉得合理安排时间是非常重要的,否则可能时间已到而还无法完成或完成得仓促,应合理安排时间给各个环结。 沈 阳 大 学 课程设计说明书 NO.24 参考文献 [1] 谭浩强.C语言程序设计[M].北京清华大学出版社,2007.05:1-200 [2] 严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社,2007. [3]徐孝凯《数据结构简明教程》,清华大学出版社,1995年:75-120 [4]陈文博,朱青《数据结构与算法》,机械工业出版社,1996年 :80-100 [5]李廉治,姜文清,郭福顺《数据结构》,大连理工大学出版社,1989年:120-200 沈 阳 大 学- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 一元 多项式
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Fis****915】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Fis****915】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Fis****915】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Fis****915】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文