




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除目 录1. 一元多项式的表示及其运算11.1 问题描述11.2 设计方案与概要设计11.3 详细设计21.4 程序运行说明与结果112. 集合的表示与运算122.1 问题描述122.2 设计方案与概要设计122.3 详细设计132.4 程序运行说明与结果183.总结与分析19精品文档1. 一元多项式的表示及其运算1.1 问题描述(1)输入并建立一元多项式(2)输出一元多项式(3)多项式实现相加、相减及相乘(4)输入多项式中的未知数,计算多项式的结果(5)退出程序1.2 设计方案与概要设计程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。 程序执行的命令包括: (1)多项式的项作为LinkList的数据元素,coef为系数,浮点型,expn为指数,整型(2)构造一个表示一元多项式链表La,存储多项式的项数、系数和指数等数据(3)利用两个多项式的结点构成和多项式,AddPolyn(&Pa,&Pb),一元多项式Pa和Pb已存在,完成多项式相加运算,即:Pa = Pa+Pb,并销毁一元多项式Pb。(4)利用两个多项式的结点构成差多项式,利用两个多项式的结点构成和多项式,SubtractPolyn(&Pa,&Pb),一元多项式Pa和Pb已存在,完成多项式相减运算,即:Pa = Pa-Pb,并销毁一元多项式Pb。(5)利用两个多项式的结点构成积多项式,利用两个多项式的结点构成和多项式,MultiplyPolyn(&Pa,&Pb),一元多项式Pa和Pb已存在,完成多项式相乘运算,即:Pa = PaPb,并销毁一元多项式Pb(6)制作标题栏(7)使用switch语句实行多分支选择操作,当case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句,输出提示用户出错,并重新输入1.3 详细设计#include #include #include typedef struct LNode float coef; int expn; struct LNode *next; LNode; LNode* InitPolyn(LNode *La,int n) if(n coef = 0.0; int i; printf(依次输入%d个非零项(每项前一个为系数,后一个为指数)n,n); for (i = 1; i coef,&La-expn); if(La-coef) Lb = La; La = La-next = (LNode*)malloc(sizeof(LNode); Lb-next = NULL; free(La); return h; LNode* selsort(LNode *h) LNode *g, *La, *Lb; if(!h) return NULL; float f; int i, fini = 1; for(g = h;g-next&fini;g = g-next) fini = 0; for(La = h,Lb = h-next;Lb;La = La-next,Lb = Lb-next) if (La-expn expn) f = La-coef;i = La-expn; La-coef = Lb-coef;La-expn = Lb-expn; Lb-coef = f;Lb-expn = i; fini = 1; for(g = h,La = g-next;La;) if(g-expn=La-expn) g-coef += La-coef; g-next = La-next; Lb = La; La = La-next; free(Lb); else if(g-next) g = g-next; La = La-next; return h; void PrintfPoly(LNode *La) LNode *Lb = La; if(!Lb) putchar(0); return; if(Lb-coef!=1) printf(%g,Lb-coef); if(Lb-expn=1) putchar(X); else if(Lb-expn) printf(X%d,Lb-expn); else if(!Lb-expn) putchar(1); else if(Lb-expn=1) putchar(X); else printf(X%d,Lb-expn); Lb = Lb-next; while (Lb) if(Lb-coef 0) putchar(+); if(Lb-coef!=1) printf(%g,Lb-coef); if(Lb-expn=1) putchar(X); else if(Lb-expn) printf(X%d,Lb-expn); else if(!Lb-expn) putchar(1); else if(Lb-expn=1) putchar(X); else printf(X%d,Lb-expn); Lb = Lb-next; Compare(LNode *a, LNode *b) if (a-expn expn) return -1; if (a-expn b-expn) return 1; return 0; LNode* AddPolyn(LNode *Pa, LNode *Pb) LNode *h, *qa = Pa, *qb = Pb, *La, *Lb; float sum; h = La = (LNode*)malloc(sizeof(LNode); La-next = NULL; while (qa & qb) switch (Compare(qa,qb) case -1: La-next = qb; La = qb; qb = qb-next; break; case 0: sum = qa-coef + qb-coef; if (sum != 0.0) La-next = qa; qa-coef = sum; La = qa; qa = qa-next; else Lb = qa; qa = qa-next; free(Lb); Lb = qb; qb = qb-next; free(Lb); break; case 1: La-next = qa; La = qa; qa = qa-next; break; if (Pa) La-next = qa; if (Pb) La-next = qb; Lb = h; h = h-next; free(Lb); return h; LNode* Add(LNode *Pa, LNode *Pb) int n; puts(再输入1个一元多项式的项数); scanf(%d,&n); Pb = InitPolyn(Pb,n); Pb = selsort(Pb); PrintfPoly(Pa); if(Pb & Pb-coef0) printf( + ); PrintfPoly(Pb); Pa = AddPolyn(Pa,Pb); printf( = ); Pa = selsort(Pa); PrintfPoly(Pa); return Pa; LNode* SubtractPolyn(LNode *Pa, LNode *Pb) LNode *La = Pb; while(La) La-coef *= -1; La = La-next; return AddPolyn(Pa,Pb); LNode* Subtract(LNode *Pa, LNode *Pb) int n; puts(n再输入1个一元多项式的项数); scanf(%d,&n); Pb = InitPolyn(Pb,n); Pb = selsort(Pb); PrintfPoly(Pa); printf( - ); putchar();PrintfPoly(Pb);putchar(); Pa = SubtractPolyn(Pa,Pb); printf( = ); Pa = selsort(Pa); PrintfPoly(Pa); return Pa; LNode* MultiplyPolyn(LNode *Pa, LNode *Pb) if(!Pb) return NULL; LNode *pa = Pa, *p, *q, *r, *s, *t; r = p = (LNode*)malloc(sizeof(LNode); while(pa) p-coef = pa-coef; p-expn = pa-expn; q = p; p = p-next = (LNode*)malloc(sizeof(LNode); pa = pa-next; q-next = NULL; free(p); pa = Pa; t = s = (LNode*)malloc(sizeof(LNode); while(pa) q = s; s = s-next = (LNode*)malloc(sizeof(LNode); pa = pa-next; q-next = NULL; free(s); pa = Pa; while(pa) pa-coef *= Pb-coef; pa-expn += Pb-expn; pa = pa-next; Pb = Pb-next; while(Pb) p = r; s = t; while(p) s-coef = p-coef * Pb-coef; s-expn = p-expn + Pb-expn; p = p-next; s = s-next; Pa = AddPolyn(Pa,t); Pb = Pb-next; return Pa; LNode* Multiply(LNode *Pa, LNode *Pb) int n; puts(n再输入1个一元多项式的项数); scanf(%d,&n); Pb = InitPolyn(Pb,n); Pb = selsort(Pb); putchar();PrintfPoly(Pa);putchar(); printf(); putchar();PrintfPoly(Pb);putchar(); printf( = ); Pa = MultiplyPolyn(Pa,Pb); Pa = selsort(Pa); PrintfPoly(Pa); return Pa; void main() LNode *A,*B; char s2; int i,n; printf(ttt-n); printf(ttt 一元多项式的表达与运算n ); printf(ttt-n); printf(ttt *Made by Huangruiting*n);puts(n输入1个一元多项式的项数); scanf(%d,&n); A = InitPolyn(A,n); A = selsort(A); PrintfPoly(A); p: puts(n1:加n2:减n3:乘n4:退出); getchar(); q: gets(s); if(s1!=0 | !isdigit(*s) puts(Error,请重新输入!);goto q; i = *s-48; switch(i) case 1:A = Add(A,B);goto p; case 2:A = Subtract(A,B);goto p; case 3:A = Multiply(A,B);goto p; case 4:break; default:puts(Error,请重新输入!);goto q; 1.4 程序运行说明与结果例:x2 +3x (1) 按照需要操作的多项式输入第1个多项式的项数例中多项式项数为2,输入2,回车;(2) 依次输入两个非零项,两个项之间用空格间开即可,每项输入,前一个为系数,后一个为指数,例中多项式第一项系数为1,输入1,空格,指数为2,输入2,空格,第二项系数为3,输入3,空格,指数为1,输入1,回车;即显示x2+3x(x2表示x的2次方)。例:计算x2 +3x 与 x3 +2x4 的乘积(3) 选择需要操作的运算,例如要计算多项式乘多项式,选择3,回车;(4) 再按照步骤(2)输入多项式x3 +2x4 ,回车;(5) 输出(x2+3x)(3x2) = 3x4+9x3 (得出结果为3x4+9x3)2. 集合的表示与运算2.1 问题描述(1)构造两个集合,命名集合A跟集合B(2)求两个集合的并集:AB(3)求两个集合的交集:AB(4)求两个集合的差集:A-B(5)退出程序2.2 设计方案与概要设计程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤输入中的非法字符)和运算结果显示在其后。 程序执行的命令包括: (1)构造一个表示集合的空链表,生成链表用于存放两集合的元素(2)打印输入的两集合中的元素,集合中为整数元素,int整型(3)第一个集合中的元素放在新集合中,与新集合中的元素比较,对第二个集合中的元素进行分析,两原集合经过分析在新集合中存放并集元素,求AB(4)第一个集合中的元素放在新集合中,与新集合中的元素比较,对第二个集合中的元素进行分析,筛选两原集合的共同元素存放在新集合中,求AB(5)第一个集合中的元素放在新集合中,与新集合中的元素比较,对第二个集合中的元素进行分析,将第一个集合的元素剔除两原集合的共同元素后存放在新集合中,求A-B(6)使用switch语句实行多分支选择操作,当case中的常量表达式的值都没有与表达式的值匹配的,操作跳回第一步要求用户重新输入2.3详细设计#include #include #include struct set int coef; struct set *next; ; void InitList_La(struct set *&La,int n) int i; struct set *L; La=(struct set *)malloc(sizeof(set); La-next=NULL; for(i=n;i0;i-) L=(struct set *)malloc(sizeof(set); printf( 请输入该集合中第%d个整数元素:,n-i+1); scanf(%d,&L-coef); L-next=La-next; La-next=L; void printlist_La(struct set *&La) struct set *L; int i; L=La-next; if(!L) printf(); while(L!=NULL) printf(%d ,L-coef); L=L-next; i+; printf();printf(n); void Addset(struct set *&p,struct set *&q,struct set *&r) struct set *a,*b,*c; r=(struct set *)malloc(sizeof(set); r-next=NULL; a=p-next; for(;a;) b=(struct set *)malloc(sizeof(set); b-next=r-next; r-next=b; b-coef=a-coef; a=a-next; a=q-next; b=(struct set *)malloc(sizeof(set); b-next=r-next; r-next=b; b-coef=a-coef; a=a-next; for(;a;) for(c=r-next;(a-coef!=c-coef)&c-next;) c=c-next; if(a-coef!=c-coef)&!(c-next) b=(struct set *)malloc(sizeof(set); b-next=r-next; r-next=b; b-coef=a-coef; a=a-next; void Subset(struct set *&p,struct set *&q,struct set *&r) struct set *a,*b,*c; r=(struct set *)malloc(sizeof(set); r-next=NULL; c=q-next; for(;c;) b=p-next; for(;(b-coef!=c-coef)&b-next;) b=b-next; if(b-coef=c-coef) a=(struct set *)malloc(sizeof(set); a-next=r-next; r-next=a; a-coef=b-coef; c=c-next; void Intset(struct set *&p,struct set *&q,struct set *&r) struct set *a,*b,*c; r=(struct set *)malloc(sizeof(set); r-next=NULL; b=p-next; for(;b;) c=q-next; for(;(b-coef!=c-coef)&c-next;) c=c-next; if(!c-next&(b-coef!=c-coef) a=(struct set *)malloc(sizeof(set); a-next=r-next; r-next=a; a-coef=b-coef; b=b-next; void Huangruiting() printf(ttt-n); printf(ttt 集合的表示与运算n ); printf(ttt-n); printf(ttt *Made by Huangruiting*n);void main() struct set *p,*q,*r; int m,n,node; Huangruiting(); for(;) do printf(n*请输入集合A中元素的个数:); scanf(%d,&m); InitList_La(p,m); printf(n*请输入集合B中元素的个数:); scanf(%d,&n); InitList_La(q,n); printf(集合A为:); printlist_La(p); printf(集合B为:); printlist_La(q); printf(请输入您要选择操作的代码:n); printf(1:求两集合的并ABn); printf(2:求两集合的交ABn); printf(3:求两集合的差A-Bn); printf(4: 同时求两集合的并集、交集及差集n);printf(0:退出n); scanf(%d,&node); while(node4); if(node=0) exit(1); while(node4); switch(node) case 1: Addset( p,q,r);printf(AB:);printlist_La(r);break;case 2: Subset( p,q,r);printf(AB:);printlist_La(r);break;case 3: Intset(p,q,r); printf(A-B:);printlist_La(r);break; case 4: Addset( p,q,r);printf(AB:);printlist_La(r); Subset( p,q,r);printf(AB:);printlist_La(r); Intset(p,q,r); printf(A-B:);printlist_La(r);break; p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产行业年度市场分析及预测报告
- 电梯安全使用规章制度
- 保健食品高效采购创新创业项目商业计划书
- 嘉应学院《幼儿园游戏》2024-2025学年第一学期期末试卷
- 二年级数学测试题及解析北师大版
- 零售行业员工培训计划模板
- 沈阳体育学院《建筑设计应用》2024-2025学年第一学期期末试卷
- 遵义师范学院《概率基础》2024-2025学年第一学期期末试卷
- 贵州工程应用技术学院《工程伦理》2024-2025学年第一学期期末试卷
- 河南工程学院《数字内容安全》2024-2025学年第一学期期末试卷
- 广西2025年公需科目学习考试试题及答案4
- 代加工板材合同协议书范本
- 2025年事业单位工勤技能-湖南-湖南地质勘查员二级(技师)历年参考题库含答案解析(5卷)
- 肝炎的分型及护理
- 高中语文38篇课内文言文挖空一遍过(教师版)
- 2025年高考真题物理(四川卷)-2
- 企业负责人财税知识培训
- 【前程无忧】2025校招人才素质洞察白皮书
- 船舶制造公司管理制度
- 2025至2030年中国石油化工自动化仪表产业发展动态及未来趋势预测报告
- 中建EPC项目报批报建工作指南
评论
0/150
提交评论