您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > C语言课程设计一元多项式
课程设计说明书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每输入一个数字,则计算出相应的值并输出,然后继续输入功能选择项。图1:功能模块图沈阳大学输入多项式A和B计算多项式A+B计算多项式A-B重置多项式A和B一元多项式计算课程设计说明书NO.3LINESubLINE(LINEs,LINEg)/*求多项式A-B*/图2:多项式差流程图沈阳大学开始LINEp1,p2,heads;p1=g;p2=g-nextWhile(p2)p2-coef*=-1;p2=p2-next;head=AddLINEp2=p1-nextfor(p2=p1-next;p2;p2=p2-next)p2-coef=-1p2=p2-nextrenturnNNYY课程设计说明书NO.4voidDestroyLINE(LINEp)/*销毁多项式*/沈阳大学开始LINEq1,q2;q1=p-nextq1==NULLrenturnq2=q1-nextq1-nextdeleteq1;q1=q2;q2=q2-next结束NNYY图3:销毁多项式流程图课程设计说明书NO.5两个多项式相乘时(假设第一个为m项,第二个为n项)只要第一个多项式的每一项的系数乘以第二个多项式每一项的系数,指数加上第二个多项式的指数。可以得到m个新的多项式。然后把这m个多项式按照指数相同的进行相加。合并成一个多项式即可。假设有两个一元多项式:P1(X)=X^2+2X+3P2(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=newPolynomial;qc-coef=qa-coef*qb-coef;qc-exp=qa-exp+qb-exp;InsertNode(qc,headf);}}沈阳大学课程设计说明书NO.62.2源程序清单#includestdio.h#includectime#includestdlib.htypedefstructline{floatcoef;intexp;line*next;}*LINE;voidPrintLINE(LINEP);voidInsert(LINEp,LINEhead);LINECreateLINE(LINEhead,intm);voidDestroyLINE(LINEp);intcomsre(LINEa,LINEb);LINEAddLINE(LINEs,LINEg);LINESubLINE(LINEs,LINEg);#includemath.hvoidPrintLINE(LINEP){LINEq=P-next;intflag=1;if(!q){putchar('0');printf(\n);return;}while(q){if(q-coef0&&flag!=1)沈阳大学课程设计说明书NO.7putchar('+');if(q-coef!=1&&q-coef!=-1){printf(%g,q-coef);if(q-exp==1)putchar('X');elseif(q-exp)printf(X^%d,q-exp);}else{if(q-coef==1){if(!q-exp)putchar('1');elseif(q-exp==1)putchar('X');elseprintf(X^%d,q-exp);}if(q-coef==-1){if(!q-exp)printf(-1);elseif(q-exp==1)printf(-X);elseprintf(-X^%d,q-exp);}沈阳大学课程设计说明书NO.8}q=q-next;flag++;}printf(\n);}voidInsertNode(LINEp,LINEhead){if(p-coef==0)deletep;else{LINEq1,q2;q1=head;q2=head-next;while(q2!=NULL&&p-expq2-exp){q1=q2;q2=q2-next;}if(q2!=NULL&&p-exp==q2-exp){q2-coef+=p-coef;deletep;if(!q2-coef){沈阳大学课程设计说明书NO.9q1-next=q2-next;deleteq2;}}else{p-next=q2;q1-next=p;}}}LINECreateLINE(LINEhead,intm){LINEp;p=head=newline;head-next=NULL;for(inti=0;im;i++){p=newline;printf(请输入第%d项的系数与指数(空格或回车隔开):,i+1);scanf(%f%d,&p-coef,&p-exp);InsertNode(p,head);}returnhead;}intComsre(LINEa,LINEb)沈阳大学课程设计说明书NO.10{if(a&&b){if(!b||a-expb-exp)return1;elseif(!a||a-expb-exp)return-1;elsereturn0;}elseif(!a&&b)return-1;elsereturn1;}voidDestroyLINE(LINEp){LINEq1,q2;q1=p-next;if(q1==NULL)return;q2=q1-next;while(q1-next){沈阳大学课程设计说明书NO.11deleteq1;q1=q2;q2=q2-next;}}LINEAddLINE(LINEs,LINEg){LINEqa=s-next;LINEqb=g-next;LINEheada,hc,qc;hc=newline;hc-next=NULL;heada=hc;while(qa||qb){qc=newline;switch(Comsre(qa,qb)){case1:{qc-coef=qa-coef;qc-exp=qa-exp;qa=qa-next;break;}case0:{沈阳大学课程设计说明书NO.12qc-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;}elsedeleteqc;}returnheada;}LINESubLINE(LINEs,LINEg){LINEp1,p2,heads;沈阳大学课程设计说明书NO.13p1=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;returnheads;}intmain(){time_tt;time(&t);printf(\t§输出:各种运算后的结果\t\t\t\t\n);printf(━━━━━━━━━━━━━━━━━━━━━━%s,ctime(&t));intm,n,i;LINEs=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.14printf(\t≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n);do{printf(\t请输入选择:);scanf(%d,&i);switch(i){case1:{printf(\t多项式A=:);PrintLINE(s);printf(\t多项式B=:);PrintLINE(g);break;}case2:{pc=AddLINE(s,g);printf(\tA+B=:);PrintLINE(pc);DestroyLINE(pc);break;}case3:{pd=SubLINE(s,g);printf(\tA-B=:);PrintLINE(pd);DestroyLINE(pd);break;}沈阳大学课程设计说明书NO.15case4:{printf(请输入多项式A项数:);scanf(%d,&m);s=CreateLINE(s,m);printf(请输入多项式B项数:);scanf(%d,&n);g=CreateLINE(g,n);break;}case5:{printf(欢迎再次使用!\n);system(pause);break;}default:{printf(\t输入错误!!!\n);break;}}}while(i!=5);DestroyLINE(s);DestroyLINE(g);return0;}沈阳大学课程设计说明书NO.163、课程设计运行结果与分析图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.234、课程设计体会一学期的时间,学完了数据结构,接下来就是要学以致用,做课程设计。虽然数据结构是一门公认的比较难的课程,自己学起来也觉得有些吃力,但在本次课程设计之前,我系统地把教科书复习了一遍,大大加深了对各种数据结构的理解,运用起来更加自如。不断地翻阅各种参考书,以及在老师和同学的帮助下,基本上考虑到了所有的边界情况,反复测试各种类型的数据,强化程序的健壮性,最终顺利完成了本次课程设计。完成设计后,我觉得收获不少,首先是自己首次应用所学知识做出了这个一元稀疏多项式计算器程序,以前从未做过这样大(这是对我而言,在专业人仕看来是小菜一碟)的程序,多少心里有点甜美的感觉;再次是自己本次所写的程序基本上考虑到了所有的特殊情况,程序运行不管输入什么数据都不会有差错,这对个人来讲是一个很大的进步。完成设计是在一定时间内完成的,在完成这个设计时,我做得显然有一
本文标题:C语言课程设计一元多项式
链接地址:https://www.777doc.com/doc-4436947 .html