当前位置:文档之家› 多项式运算

多项式运算

多项式运算
多项式运算

#include

#include"polynomail.h"

LinkList La;

LinkList Lb;

void main()

{

int n,m;

printf("请第一个输入一元多项式的项数");

scanf("%d",&n);

CreatPolyn(La,n);//输入多项式

printf("第一个多项式如下:");

PrintPolyn(La,n);//打印多项式

printf("请第二个输入一元多项式的项数"); scanf("%d",&m);

CreatPolyn(Lb,m);//输入多项式

printf("第二个多项式如下:");

PrintPolyn(Lb,m);//打印多项式

printf("两多项相加的结果如下:");

AddPolyn(La,Lb);//相加

PrintPolyn(La,La.len);//打印多项式

printf("两多项式相减的结果如下:"); SubtractPolyn(La,Lb);//相减

PrintPolyn(La,La.len);//打印多项式

}

#include

// 函数结果状态代码

const int TRUE = 1;

const int FALSE = 0;

const int OK = 1;

const int ERROR = 0;

const int INFEASIBLE = -1;

const int OVERFLOW = -2;

// Status 是函数的类型,其值是函数结果状态代码typedef int Status;

#include

#include

#include "ds.h" //for Status,OK ...

typedef struct {//项的表示,多项式的项作为LinkList的数据元素

float coef;//系数

int expn;//指数

}term,ElemType;

/**********************************************************

* 单链表的存储结构定义

***********************************************************/ typedef struct LNode {//结点类型

ElemType data;

struct LNode *next;

} *Link,*Position,Lin;

typedef struct{//链表类型

Link head,tail;//分别指向线性链表中的头结点和最后一个结点

int len;//指向线性链表中数据元数的个数

}LinkList;

int cmp(term a,term b)

{//比较a,b的数值,分别返回-1,0,1

if(a.expn

return -1;

if(a.expn==b.expn)

return 0;

if(a.expn>b.expn)

return 1;

}

/**********************************************************

* 单链表的基本操作声明

***********************************************************/

Status MakeNode(Link &p,ElemType e);

//分配由p指向的值为e的结点,并返回OK,若分配失败,则返回ERROR void FreeNode(Link &p);

//释放p所指空间

Status InitList(LinkList &L);

//构建一个空的线性链表L

Status InsFirst(LinkList &L,Link h,Link s);

//将s所指结点插入在h结点之后

Status DelFirst(LinkList &L,Link h,Link q);

// 删除链表中的h结点之后的结点q

Status Append(LinkList &L,Link s);

//将指针s所指(彼此以指针相连)的结点链接在线性链表L的最后一个结点

//之后,并改变链表L的尾指针指向新的尾结点

Status SetCurElem(Link &p,ElemType e);

//已知p指向线性链表中的一个结点,用e更新p所指结点中的数据元素的值

ElemType GetCurElem(Link p);

//已知p指向线性链表中的一个结点,返回p所指结点中数据元素的值

Status ListEmpty(LinkList L);

//若线性链表L为空表,则返回TRUE,否则返回FALSE

Position GetHead(LinkList L);

//f返回线性链表L中头结点的位置

Position NextPos(LinkList L,Link p);

//已知p指向线性链表L中的一个结点,返回p所指结点的直接后继的位置,

//若没后继,则返回NULL

Status LocateElem(LinkList L,ElemType e,Position &q);

// 若有序链表L中纯在与e满足判定函数compare()取值为0的元素,则q指示L中第一个 //值为e的结点的位置,并返回TRUE,否则返回q指示与e满足版定函数compare()取值大于0的

//元素的前驱的位置,并返回FALSE

/**********************************************************

* 单链表的基本操作的实现

***********************************************************/

//给节点变量分配空间

Status MakeNode(Link &p,ElemType e)

{

p=(Link)malloc(sizeof(LNode));

if(!p) return ERROR;

else

return OK;

}

//释放p所指的结点

void FreeNode(Link &p)

{

free(&p);

p=NULL;

}

//构造一个空的线性链表L

Status InitList(LinkList &L)

{

L.head=L.tail=(Link)malloc(sizeof(LNode)); L.len=0;

return OK;

}

//在h结点之后插入一个结点

Status InsFirst(LinkList &L,Link h,Link s) {

s->next=h->next;

h->next=s;

L.len++;

if(!s->next)

L.tail=s;

return OK;

}

//删除链表中的h结点之后的结点q Status DelFirst(LinkList &L,Link h,Link q) {

if(h->next==NULL)

return ERROR;

q=h->next;

h->next=q->next;

L.len--;

if(!q->next)

L.tail=h;

return OK;

}

//将s所指的结点接在线性表L之后Status Append(LinkList &L,Link s)

{

int i=0;

Link q=s;

Link p;

while(s)

{

p=s;

s=s->next;

i++;

}

L.tail->next=q;

L.tail=p;

L.len+=i;

return OK;

}

//用元数e更新p所指结点中元数的值

Status SetCurElem(Link &p,ElemType e)

{

p->data=e;

return OK;

}

//返回p所指结点中数据元数的值

ElemType GetCurElem(Link p)

{

return p->data;

}

//判断线性链表是否是空

Status ListEmpty(LinkList L)

{

if(L.head==L.tail==NULL)

return TRUE;

else

return FALSE;

}

//返回线性链表头结点的位置

Position GetHead(LinkList L)

{

return L.head;

}

//返回p结点直接后继的位置

Position NextPos(LinkList L,Link p)

{

if(p->next==NULL)

return NULL;

else

return p->next;

}

//返回第一个与e相等的节点的位置

Status LocateElem(LinkList L,ElemType e,Position &q) {

Position s,p=L.head;

ElemType m;

while(p->next)

{

s=p;

p=p->next;

m=p->data;

if(cmp(e,m )==0)

{

q=p;

return TRUE;

}

if(cmp(e,m)>0 )

{

q=s;

return FALSE;

}

}

}

#include"Linklist.h"

typedef LinkList polynomail;

//----一些函数的声明-----------

void CreatPolyn(polynomail &p,int m);

//输入m项的系数和指数,建立表示一元多项式的有序链表p void DestroyPolyn(polynomail &p);

//销毁一元多项式p

void Printpolyn(polynomail p,int m);

//打印输出一元多项式p

void AddPolyn(polynomail &pa,polynomail &pb);

//完成多项式的相加运算,即Pa=Pa+Pb,并销毁一元多项式Pb void SubtractPolyn(polynomail &Pa,polynomail &Pb);

// 完成多项式的相减运算,即Pa=Pa-Pb,并销毁一元多项式Pb //----------基本操作的实现---------------------

void CreatPolyn(polynomail &P,int m)

{//输入m项的系数和指数,建立表示一元多项式的有序链表P InitList(P); Link h=GetHead(P);

term e;

Position q,s;

e.coef=0.0; e.expn=-1;

SetCurElem(h,e);//设置头节点的数据元素

for(int i=1;i<=m;i++)

scanf("%f,%d",&e.coef,&e.expn);

if(!LocateElem(P,e,q))//当前链表中不存在该指数项

if(MakeNode(s,e)) InsFirst(P,q,s);//生成节点并插入链表

}

void Destroypolyn(polynomail &p)

{//销毁一元多项式

Link k;

while(p.head ->next!=NULL)

{

k=p.head ;

p.head =p.head ->next ;

free(k);

}

free(&p);

}

void PrintPolyn(polynomail p,int m)

{//打印输出一元多项式p

Link ha=GetHead(p);

Link qa;

term e;

for(int i=1;i<=m;i++)

{

qa=NextPos(p,ha);

e=GetCurElem(qa);

printf("%f,%d",e.coef,e.expn);

printf(";");

ha=qa;

}

}

void AddPolyn(polynomail &Pa,polynomail &Pb)

{

//多项式加法;pa=pa+pb,利用两个多项式的节点构成“和多项式”Link ha=GetHead(Pa);

Link hb=GetHead(Pb);//ha和hb分别指向pa和pb的头节点

Link qa=NextPos(Pa,ha);

Link qb=NextPos(Pb,hb);

while(qa&&qb)

{//qa,qb均非空

term a=GetCurElem(qa);

term b=GetCurElem(qb);

switch(cmp(a,b))//a和b为两表比较元数

{

case -1:

ha=qa;

qa=NextPos(Pa,qa);

break;

case 0:

a.coef =a.coef+

b.coef;

if(a.coef !=0.0)

{ //修改多项式Pa中当前结点的系数

SetCurElem(qa,a);

ha=qa;

}

else

{ //删除多项式Pa中当前结点

DelFirst(Pa,ha,qa);

FreeNode(qa);

}

DelFirst(Pb,hb,qb);

FreeNode(qb);

qb=NextPos(Pb,hb);

qb=NextPos(Pa,ha);

break;

case 1: //多项式Pb中当前结点的指数最小

InsFirst(Pa,ha,qb);

DelFirst(Pb,hb,qb);

qb=NextPos(Pb,hb);

ha=NextPos(Pa,hb);

break;

}

}

if(!ListEmpty(Pb))

Append(Pa,qb);//链接Pb中剩余结点

FreeNode(hb);//释放Pb的结点

}

void SubtractPolyn(polynomail &Pa,polynomail &Pb)

{//多项式减法;pa=pa-pb,利用两个多项式的节点构成“减多项式”Link ha=GetHead(Pa);

Link hb=GetHead(Pb);//ha和hb分别指向pa和pb的头节点

Link qa=NextPos(Pa,ha);

Link qb=NextPos(Pb,hb);

term b;

while(qa&&qb)

{//qa,qb均非空

term a=GetCurElem(qa);

b=GetCurElem(qb);

switch(cmp(a,b))//a和b为两表比较元数{

case -1:

ha=qa;

qa=NextPos(Pa,qa);

break;

case 0:

a.coef=a.coef-

b.coef;

if(a.coef!=0.0)

{ //修改多项式Pa中当前结点的系数SetCurElem(qa,a);

ha=qa;

}

else

{ //删除多项式Pa中当前结点

DelFirst(Pa,ha,qa);

FreeNode(qa);

}

DelFirst(Pb,hb,qb);

FreeNode(qb);

qb=NextPos(Pb,hb);

qb=NextPos(Pa,ha);

break;

case 1: //多项式Pb中当前结点的指数最小

b.coef=-b.coef;

SetCurElem(qb,b);

InsFirst(Pa,ha,qb);

DelFirst(Pb,hb,qb);

qb=NextPos(Pb,hb);

ha=NextPos(Pa,hb);

break;

}

}

while(!ListEmpty(Pb))

{

b.coef=-b.coef; SetCurElem(qb,b);

InsFirst(Pa,ha,qb);

DelFirst(Pb,hb,qb);

qb=NextPos(Pb,hb);

b=GetCurElem(qb);

}

FreeNode(hb);//释放Pb的结点}

顺序链式一元多项式加法、减法、乘法运算的实现

1.1设计内容及要求 1)设计内容 (1)使用顺序存储结构实现多项式加、减、乘运算。 例如: 10321058)(2456+-+-+=x x x x x x f ,x x x x x x g +--+=23451020107)( 求和结果:102220128)()(2356++-+=+x x x x x g x f (2)使用链式存储结构实现多项式加、减、乘运算, 10305100)(1050100+-+=x x x x f ,x x x x x x g 320405150)(10205090+++-= 求和结果:1031040150100)()(102090100++-++=+x x x x x x g x f 2)设计要求 (1)用C 语言编程实现上述实验内容中的结构定义和算法。 (2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。 (3)用switch 语句设计如下选择式菜单。 ***************数据结构综合性实验**************** *******一、多项式的加法、减法、乘法运算********** ******* 1.多项式创建 ********** ******* 2.多项式相加 ********** ******* 3.多项式相减 ********** ******* 4.多项式相乘 ********** ******* 5.清空多项式 ********** ******* 0.退出系统 ********** ******* 请选择(0—5) ********** ************************************************* *请选择(0-5): 1.2数据结构设计 根据下面给出的存储结构定义: #define MAXSIZE 20 //定义线性表最大容量

一元多项式加减乘除运算

中国计量学院实验报告 实验课程:算法与数据结构实验名称:一元二项式班级:学号: 姓名:实验日期: 2013-5-7 一.实验题目: ①创建2个一元多项式 ②实现2个多项式相加 ③实现2个多项式相减 ④实现2个多项式相乘 ⑤实现2个多项式相除 ⑥销毁一元多项式 实验成绩:指导教师:

二.算法说明 ①存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储 空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 ②加法算法

三.测试结果 四.分析与探讨 实验数据正确,部分代码过于赘余,可以精简。 五.附录:源代码#include<> #include<> #include<> typedef struct Polynomial { float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial; 出多项式a和b\n\t2.多项式相加a+b\n\t3.多项式相减a-b\n"); printf("\t4.多项式相除a*b\n\t5.多项式相除a/b\n\t6.销毁多项式\n"); printf("\t7.退出

\n*********************************** ***********\n"); printf("执行:"); scanf("%d",&flag); switch(flag) { case(1): printf("多项式a:");PrintPolyn(pa); printf("多项式b:");PrintPolyn(pb);break; case(2): pc=AddPolyn(pa,pb); printf("多项式a+b:");PrintPolyn(pc); DestroyPolyn(pc);break; case(3): pd=SubtractPolyn(pa,pb); printf("多项式a-b:");PrintPolyn(pd); DestroyPolyn(pd);break; case(4): pf=MultiplyPolyn(pa,pb); printf("多项式a*b:");PrintPolyn(pf); DestroyPolyn(pf);break; case(5): DevicePolyn(pa,pb); break; case(6): DestroyPolyn(pa); DestroyPolyn(pb); printf("成功销毁2个一元二项式\n"); printf("\n接下来要执行的操作:\n1 重新创建2个一元二项式 \n2 退出程序\n"); printf("执行:"); scanf("%d",&i); if(i==1) { // Polyn pa=0,pb=0,pc,pd,pf;//定义各式的头指针,pa与pb在使用前付初值NULL printf("请输入a的项数:"); scanf("%d",&m); pa=CreatePolyn(pa,m);// 建立多项式a printf("请输入b的项

如何进行多项式除以多项式的运算

如何进行多项式除以多项式的运算 多项式除以多项式,一般可用竖式计算,方法与算术中的多位数除法相似,现举例说明如下: 例1 计算)4()209(2+÷++x x x 规范解法 ∴ .5)4()209(2+=+÷++x x x x 解法步骤说明: (1)先把被除式2092 ++x x 与除式4+x 分别按字母的降幂排列好. (2)将被除式2092++x x 的第一项2x 除以除式4+x 的第一项x ,得x x x =÷2,这就是商的第一项. (3)以商的第一项x 与除式4+x 相乘,得x x 42+,写在2092++x x 的下面. (4)从2092++x x 减去x x 42+,得差205+x ,写在下面,就是被除式去掉x x 42+后的一部分. (5)再用205+x 的第一项x 5除以除式的第一项x ,得55=÷x x ,这是商的第二项,写在第一项x 的后面,写成代数和的形式. (6)以商式的第二项5与除式4+x 相乘,得205+x ,写在上述的差205+x 的下面. (7)相减得差0,表示恰好能除尽. (8)写出运算结果,.5)4()209(2+=+÷++x x x x 例2 计算)52()320796(2245--÷+-+-x x x x x x . 规范解法

∴ )52()320796(2245--÷+-+-x x x x x x 163323-+-=x x x ……………………………余29-x . 注 ①遇到被除式或除式中缺项,用0补位或空出;②余式的次数应低于除式的次数. 另外,以上两例还可用分离系数法求解.如例2. ∴ )52()320796(2 245--÷+-+-x x x x x x 163323-+-=x x x ……………………………余29-x . 8.什么是综合除法? 由前面的问题4我们知道两个多项式相除可以用竖式进行,但当除式为一次式,而且它的首项系数为1时,情况比较特殊. 如:计算)3()432(3 -÷-+x x x . 因为除法只对系数进行,和x 无关,于是算式(1)就可以简化成算式(2). 还可以再简化.方框中的数2、6、21和余式首项系数重复,可以不写.再注意到,因除式的首项系数是1,所以余式的首项系数6、21与商式的系数重复,也可以省略.如果再

多项式教案

2.1整式---多项式 教学内容: 教科书第56—59页,2.1整式:2.多项式。 教学目标和要求: 1.通过本节课的学习,使学生掌握整式多项式的项及其次数、常数项的概念。 2.通过小组讨论、合作交流,让学生经历新知的形成过程,培养比较、分析、归纳的能力。由单项式与多项式归纳出整式,这样更有利于学生把握概念的内涵与外延,有利于学生知识的迁移和知识结构体系的更新。 3.初步体会类比和逆向思维的数学思想。 教学重点和难点: 重点:掌握整式及多项式的有关概念,掌握多项式的定义、多项式的项和次数,以及常数项等概念。 难点:多项式的次数。 教学方法: 分层次教学,讲授、练习相结合。 教学过程: 一、旧知复习 1、练习巩固 复习提问:什么是单项式、系数、次数? 二、讲授新课: 创设情境:1、小明房间的窗户如图所示,其中上方的装饰物由两个四分之一圆和一个半圆组成(它们的半径相同)(1)装饰物所占的面积是多少?(2)窗户能射进阳光部分的面积是多少?(让学生讨论) 2、填空 (1)一个数比数x的2倍小3,则这个数为____; (2)如图1,三角板的面积为____; (3)买一个篮球需要x元,买一个排球需要y元买一个足球需要40元,买3个篮球、5个排球、2个足球共需要元;

得出结果让学生观察 (由学生小组派代表回答,教师应肯定每一位学生说出的特点,培养学生观察、比较、归纳的能力,同时又锻炼他们的口表能力。通过特征的讲述,由学生自己归纳出多项式的定义,教室可给予适当的提示及补充。) 3多项式: 板书由学生自己归纳得出的多项式概念。上面这些代数式都是由几个单项式相加而成的。像这样,几个单项式的和叫做多项式。 在多项式中,每个单项式叫做多项式的项其中,不含字母的项,叫做常数项 一个多项式含有几项,就叫几项式。多项式里,次数最高项的次数,就是这个多项式的次数。 注意: (1)多项式的次数不是所有项的次数之和; (2)多项式的每一项都包括它前面的符号。 (教师介绍多项式的项和次数、以及常数项等概念,并让学生比较多项式的次数与单项式的次数的区别与联系,渗透类比的数学思想。) 2.例题: 例1:判断: ①多项式a 3-a 2b+a b 2-b 3的项为a 3、a 2b、a b 2、b 3,次数为12; ②多项式3n 4-2n 2+1的次数为4,常数项为1。 (这两个判断能使学生清楚的理解多项式中项和次数的概念,第(1)题中第二、四项应为 -a 2b 、-b 3,而往往很多同学都认为是a 2b 和b 3,不把符号包括在项中。另外也有同学认为该多项式的次数为12,应注意:多项式的次数为最高次项的次数。) 例2:指出下列多项式的项和次数: (1)3x -1+3x 2;(2)4x 3+2x -2y 2。 解:略。 例3:指出下列多项式是几次几项式。 (1)x 3-x +1;(2)x 3-2x 2y 2+3y 2。 3540x y ++23x -2 12 ab r π-216ab b π -

多项式四则运算

多项式四则运算 运行图: 源代码: // 多项式加减乘除-02.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; } #include #include typedef struct Polynomial { float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial; void Insert(Polyn p,Polyn h) { if(p->coef==0) free(p); else {

Polyn q1,q2; q1=h; q2=h->next; while(q2&&p->expnexpn) { q1=q2; q2=q2->next; } if(q2&&p->expn==q2->expn) { q2->coef+=p->coef; free(p); if(!q2->coef) { q1->next=q2->next; free(q2); } } else { p->next=q2; q1->next=p; } } } Polyn CreatePolyn(Polyn head,int m) { int i; Polyn p; p=head=(Polyn)malloc(sizeof(struct Polynomial)); head->next=NULL; for(i=0;icoef,&p->expn); Insert(p,head); } return head; } void DestroyPolyn(Polyn p) { Polyn q1,q2; q1=p->next;

数据结构中实现一元多项式简单计算

数据结构中实现一元多项式简单计算: 设计一个一元多项式简单的计算器。 基本要求: 一元多项式简单计算器的基本功能为: (1)输入并建立多项式; (2)输出多项式; (3)两个多项式相加,建立并输出和多项式; (4)两个多项式相减,建立并输出差多项式; #include #include #define MAX 20 //多项式最多项数 typedef struct//定义存放多项式的数组类型 { float coef; //系数 int exp; //指数 } PolyArray[MAX]; typedef struct pnode//定义单链表结点类型 { float coef; //系数 int exp; //指数 struct pnode *next; } PolyNode; void DispPoly(PolyNode *L) //输出多项式 { PolyNode *p=L->next; while (p!=NULL) { printf("%gX^%d ",p->coef,p->exp); p=p->next; } printf("\n"); } void CreateListR(PolyNode *&L,PolyArray a,int n) //尾插法建表 { PolyNode *s,*r;int i; L=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点for (i=0;i

01多项式的概念

01多项式的概念 多项式的概念 一、代数式的有关概念. 1.代数式:代数式是由运算符号(加、减、乘、除、乘方、开方)把数或表示数的字母连结而成的式子.单独的一个数或者一个字母也是代数式. 2.代数式的值;用数值代替代数式里的字母,计算后所得的结果叫做代数式的值. 求代数式的值可以直接代入、计算.如果给出的代数式可以化简,要先化简再求值. 3.代数式的分类 2.整式的有关概念 二、单项式 1.单项式的概念:数与字母的乘积这样的代数式叫做单项式,包括以下几类: ⑴单独的一个数,如56; ⑵单独的一个字母,如a; ⑶数与字母的乘积,如3b; ⑷字母与字母的乘积,如abc。 ⑸【注意事项】是数,不是字母;②分母不能包含字母 2.单项式的次数:一个单项式中,所有字母的指数和叫做这个单项式的次数。 【注意事项】单独一个非零数的次数是0。如5的次数是0 3.单项式的系数:单项式中的数字因数叫做单项式的系数。 【注意事项】①单个字母的系数是1.如:a的系数是1;②单项式的系数包括它前面的符号,如的系数是 三、多项式:几个单项式的和,叫做多项式 1.多项式的概念:几个单项式的和叫做哦多项式。 2.多项式的次数:在一个多项式中,次数最高的项的次数叫做这个多项式的次数。 3.多项式的项数:多项式中单项式的个数叫做多项式的项数。

4.多项式的降幂排列与升幂排列 把一个多项式按某一个字母的指数从大到小的顺序排列起来,叫做把这个多项式按这 个字母降幂排列把—个多项式按某一个字母的指数从小到大的顺序排列起来,叫做把这 个多项式技这个字母升幂排列, 给出一个多项式,要会根据要求对它进行降幂排列或升幂排列. 四、同类项 1.概念:所含的字母相同,且相同字母的指数也相同的单项式叫做同类项.几个常 数项也是同类项 2.合并同类项 ⑴概念:把多项式中的同类项合并成一项,叫做合并同类项.一个多项式合并后含有 几项,这个多项式就叫做几项式. ⑵法则归纳:把同类项的系数相加的结果作为合并后的系数,字母和字母的指数不变. ⑶注意事项: ①如果多项式中项数较多、较复杂时,可在同类项上标注记号,便于认清同类项,做 到不遗漏、不重复. ②所有常数项都是同类项,都可进行合并 【例题1】说出下列单项式中各字母的的次数和系数 ⑴5ax2y 【例题2】指出下列多项式的项数、次数 【例题3】 ⑴如果是关于x、y的单项式,且系数为2,次数为3,则a、b分别是多少? ⑵如果多项式的次数为4次,且有三项,则m为多少? 22⑶如果多项式不含xy的项,求:的值 设

多项式的运算(c语言实现)

#include"stdio.h" #include"stdlib.h" #include"conio.h" typedef struct Item{ double coef;//系数 int expn;//指数 struct Item *next; }Item,*Polyn; #define CreateItem(p) p=(Item *)malloc(sizeof(Item)); #define DeleteItem(p) free((void *)p); /************************************************************/ /* 判断选择函数 */ /************************************************************/ int Select(char *str) { char ch; printf("%s\n",str); printf("Input Y or N:"); do{ ch=getch(); }while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n'); printf("\n"); if(ch=='Y'||ch=='y') return(1); else return(0); } /************************************************************/ /* 插入位置定位函数 */ /**************************************************************/ int InsertLocate(Polyn h,int expn,Item **p) { Item *pre,*q; pre=h; q=h->next; while(q&&q->expnnext; } if(!q) { *p=pre; return(1); } else if(q->expn==expn) { *p=q; return(0); } else { *p=pre; return(-1); } } /************************************************************/ /* 插入结点函数 */ /************************************************************/ void insert(Item *pre,Item *p) {

数据结构一元多项式的计算

课程设计成果 学院: 计算机工程学院班级: 13计科一班 学生姓名: 学号: 设计地点(单位): 设计题目:一元多项式的计算 完成日期:年月日 成绩(五级记分制): _________________ 教师签名:_________________________ 目录 1 需求分析 ......................................................................... 错误!未定义书签。 2 概要设计 ......................................................................... 错误!未定义书签。 2.1一元多项式的建立 ............................................................... 错误!未定义书签。 2.2显示一元多项式 ................................................................... 错误!未定义书签。 2.3一元多项式减法运算 ........................................................... 错误!未定义书签。 2.4一元多项式加法运算 ........................................................... 错误!未定义书签。 2.5 设计优缺点.......................................................................... 错误!未定义书签。3详细设计 .......................................................................... 错误!未定义书签。 3.1一元多项式的输入输出流程图........................................... 错误!未定义书签。 3.2一元多项式的加法流程图................................................... 错误!未定义书签。 3.3一元多项式的减法流程图.................................................. 错误!未定义书签。 3.4用户操作函数....................................................................... 错误!未定义书签。4编码 .................................................................................. 错误!未定义书签。5调试分析 .......................................................................... 错误!未定义书签。4测试结果及运行效果...................................................... 错误!未定义书签。5系统开发所用到的技术.................................................. 错误!未定义书签。参考文献 ............................................................................. 错误!未定义书签。附录全部代码................................................................... 错误!未定义书签。

知识点008 代数式整式及单项式多项式的有关概念

一、选择题 1. (2011盐城,4,3分)已知a ﹣b =1,则代数式2a ﹣2b ﹣3的值是( ) A .﹣1 B .1 C .﹣5 D .5 考点:代数式求值. 专题:计算题. 分析:将所求代数式前面两项提公因式2,再将a ﹣b =1整体代入即可. 解答:解:∵a ﹣b =1,∴2a ﹣2b ﹣3=2(a ﹣b )﹣3=2×1﹣3=﹣1.故选A . 点评:本题考查了代数式求值.关键是分析已知与所求代数式的特点,运用整体代入法求解. 2. (2011?台湾8,4分)若(7x ﹣a )2=49x 2﹣bx+9,则|a+b|之值为何( ) A 、18 B 、24 C 、39 D 、45 考点:完全平方公式;代数式求值。 专题:计算题。 分析:先将原式化为49x 2﹣14ax+a 2=49x 2﹣bx+9,再根据各未知数的系数对应相等列出关于a 、b 的方程组,求出a 、b 的值代入即可. 解答:解:∵(7x ﹣a )2=49x 2﹣bx+9, ∴49x 2﹣14ax+a 2=49x 2﹣bx+9, ∴???=-=-9 142a b a , 解得? ??-=-=???==423423b a b a 或, 当a=3,b=42时,|a+b|=|3+42|=45; 当a=﹣3,b=﹣42时,|a+b|=|﹣3﹣42|=45; 故选D . 点评:本题是一个基础题,考查了完全平方公式以及代数式的求值,要熟练进行计算是解此题的关键. 3. (2011?湘西州)当a=3,b=2时,a 2+2ab+b 2的值是( ) A 、5 B 、13 C 、21 D 、25 考点:代数式求值;完全平方公式。 专题:计算题。 分析:先运用完全平方公式将a 2+2ab+b 2变形为:(a+b )2,再把a 、b 的值代入即可. 解答:解:a 2+2ab+b 2=(a+b )2, 当a=3,b=2时, 原式=(3+2)2=25, 故选:D . 点评:此题考查的是代数式求值,并渗透了完全平方公式知识,关键是运用完全平方公式先将原式因式分解再代入求值. 4. (2011海南,5,3分)“比a 的2倍大1的数”用代数式表示是( ) A .2(a +1) B .2(a -1) C .2a +1 D .2a -1 考点:列代数式。 分析:由题意按照描述列式子为2a +1,从选项中对比求解. 解答:解:由题意按照描述列下式子:2a +1 故选C . 点评:解决问题的关键是读懂题意,找到所求的量的等量关系.

一元多项式的运算

数据结构课程设计实验报告 专业班级: 学号: 姓名: 2011年1月1日

题目:一元多项式的运算 1、题目描述 一元多项式的运算在此题中实现加、减法的运算,而多项式的减法可以通过加法来实现(只需在减法运算时系数前加负号)。 在数学上,一个一元n次多项式P n(X)可按降序写成: P n(X)= P n X^n+ P(n-1)X^(n-1)+......+ P1X+P0 它由n+1个系数惟一确定,因此,在计算机里它可以用一个线性表P来表示: P=(P n,P(n-1),......,P1,P0) 每一项的指数i隐含在其系数P i的序号里。 假设Q m(X)是一元m次多项式,同样可以用一个线性表Q来表示: Q=(q m,q(m-1),.....,q1,q0) 不是一般性,假设吗吗m

一元多项式计算问题课程设计

长沙学院课程设计说明书 题目一元多项式计算问题系(部) 计算机系 专业(班级) 10级软件D班 姓名向栋良 学号2010022D08 指导教师邓旭东 起止日期2011.9.4-2011.9.8

课程设计任务书 课程名称:数据结构与算法 设计题目:一元多项式计算问题 已知技术参数和设计要求: 问题描述: 设计一个稀疏多项式简单计算器 基本要求: (1)输入并分别建立多项式A和B (2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列 (3)完成两个多项式的相加、相减,并将结果输出; 测试数据: (1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2 (2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7 (3) A+B A=x3+x1B=-x3-x1 (4) A+B A=0 B=x7+x5+x3+x1 (5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x 选作内容: (1).多项式在x=1时的运算结果 (2)求多项式A和B的乘积 设计工作量: 40课时 日期节次地点设计方式9月4日(周日)1-4 科1408 讲授内容 9月4日(周日)5-8 科1608 答疑 9月5日(周一)1-4科1408上机调试 9月5日(周一)5-8 科1608 答疑 9月6日(周二)1-4科1408上机调试 9月6日(周二)5-8 科1608 答疑 9月7日(周三)1-4科1408上机调试 9月7日(周三)5-8 科1608 答疑 9月8日(周四)1-4科1608答疑 9月8日(周四)5-8 科1408 答辩

单项式多项式概念讲解

单项式与多项式的概念 1、单项式的有关概念 (1) 单项式:由数与字母或字母与字母相乘组成的代数式。单独的一个数或字母...也叫做单 2 3 项式。例如:3a,-m n,abx,4x ,9, a 注意:单项式不含加减运算,只含字母与字母或字母的乘法(包括乘方)运算 1 (2) 单项式的系数:单项式中数字 因数叫做这个单项式的系数。 例如:单项式丄x 2y,-7xy 2 2 1 的系数分别是 —,-7,当单项式系数是 1或—1时,“ 1”通常省略不写,如 ab 就是1 ab , 2 系数是1 ; - n 就是-1 n ,系数是—1. (3) 单项式的次数(指数):一个单项式中,所有字母的指数的和叫做这个单项式的次数。 如4x 的次数是1, 3x 2y 3 z 的次数是2+3+1 = 6;数学的次数是 0,女口 3, — 9等可以当作0 次单项 式。 1 1 一个单项式的次数是几就叫做几次单项式, 如—a 2b 2中,a 与b 的指数和为4,则-a 2b 2 是 3 3 四次单项式。 例1:指出下列各单项式的系数和次数 2、多项式的有关概念 (1) 多项式:几个单项式的和叫做多项式。其中,每个单项式叫做多项式的项,不含字母 的项叫做常数项。女口 3x 2 -2x ? 5是多项式,它的项分别是 3x 2 ,- 2x 和5,其中5是常数 项。 (2 )多项式的次数:多项式里次数最高的项的次数就是这个多项式的次数。如 2y 4 -3x 2 2的次为是3,即“ 2x 3 ”的次数。一个多项式中含有几项,最高次数是几次就 -a ,5ab 2, a 2bc 3 , 3 提示:圆周率 二是常数,当单项式中含有 数时应注意不要加上二的指数。 二时,二是单项式的系数,且在计算单项式的次

一元多项式计算(数据结构课程设计)

一元多项式计算(数据结构课程设计)

一、系统设计 1、算法思想 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加(减),若其和(差)不为零,则构成“和(差)多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别写到“和(差)多项式”中去。 因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式a 和多项式b,对于最后计算所得的多项式则利用多项式a进行存储。主要用到了单链表的插入和删除操作。

(1)一元多项式加法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P 的指数小于q的指数的话就应该复制q的节点到多项式中。P的指数大于q的指数的话,就应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生。 (2)一元多项式的减法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q的节点到多项式中。P的指数大于q的指数的话就应该复制p的节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。 2、概要设计 (1)主函数流程图: (注:a代表第一个一元二次方程,b代表第二个一元二次方程)

一元多项式的计算数据结构课程设计

一元多项式的计算—加,减 摘要(题目)一元多项式计算 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加、相减,并将结果输入; 目录 1.引言 2.需求分析 3.概要设计 4.详细设计 5.测试结果 6.调试分析 7.设计体会 8.结束语 一:引言: 通过C语言使用链式存储结构实现一元多项式加法、减法和乘法的运算。按指数

降序排列。 二:需求分析 建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式的加减运算并输出结果 三:概要设计 存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 1.单连表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R1={| ai-1, ai∈D,i=2,…,n} 基本操作: InitList(&L) //操作结果:构造一个空的线性表 CreatPolyn(&L) //操作结果:构造一个以单连表存储的多项试 DispPolyn(L) //操作结果:显示多项试 Polyn(&pa,&pb) //操作结果:显示两个多项试相加,相减的结果 } ADT List 2.本程序包含模块: typedef struct LNode //定义单链表 { }LNode,*LinkList; void InitList(LinkList &L) //定义一个空表 { } void CreatPolyn(LinkList &L) //用单链表定义一个多项式 { } void DispPolyn(LinkList L) //显示输入的多项式

多项式概念及整式加减运算——(2)

多项式概念及整式加减运算 一、多项式概念: 1、概念:几个单项式的和 2、多项式的项:多项式中的每个单项式,包括它前面的符号。 3、多项式的次数:多项式中次数最高项的次数。它与单项式的次数不同。 巩固练习: 1、分别说出下列多项式中的每一项以及这个多项式的次数。 ⑴753423--+-xy y x x ⑵x 3+3x 2 y ⑶-31y 3+72xy 2+3x 2y-54x 3 2、4x 2-5x 2+7x 3-6+8x 是____次____项式,其中常数项是_____ 二、多项式的排列: 多项式的排列分升幂排列和降幂排列两种 如:将3x 2y - 54x 3+72xy 2-31y 3按x 的降幂排列是____ __,按y 的降幂排列是__ ___. 巩固练习: 将-6x 3+671 xy 2+25 x 2y -25y 3. 按x 的降幂排列是____ __,按y 的降幂排列是__ ___. 三、合并同类项: 1、同类项的条件:两相同:①字母、②指数相同; 两无关:①与系数无关;②与字母顺序无关. 2、合并同类项的方法:合并同类项,系数全加上;字母和指数,全都不变样。 3、去括号:去括号法则。 例题1:下列各组单项式中,不是同类项的是( ) (A)5x 与x (B)4xy 2与-4y 2x (C)76 x 5y 与76 x 5 (D)4与-4 例题2:合并同类项 ⑴= -++-)7()35(x y y x ⑵m +n -(m -n) ⑶(2a+b+c )-2(a -b -c ) 巩固练习: 1、)22()24(33xy x x yx xy +-+-- 2、()[]{}y x x y x --+--32332 3、()[]x y x y x x -++--22 4、-3a 2-[-a 2+(-2a)2]-2a 4、多项式3x 2y -3xy 2加上多项式x 3-3x 2y 得( ) A.x 3+3xy 2; B. x 3-3xy 2 ; C.x 3-3x 2y; D.x 3+3x 2y 5、已知A=2221 43b ab a -+,B=ab a 252 -,且2A -B+C=0,则C= 。 6、若a -b=2,a+c=6,则(2a+b+c )-2(a -b -c )= 。 7、求代数式2〔mn +(-3m)〕-3(2n -mn)的值,其中m +n=2,mn=-3. 8、一个多项式减去235m mn +得mn n 422--,求这个多项式。

单项式多项式概念讲解

单项式与多项式的概念 1、单项式的有关概念 (1)单项式:由数与字母或字母与字母相乘组成的代数式。单独的一个数或字母.........也叫做单项式。例如:a x abx n m a ,9,4,,,33 2 - 注意:单项式不含加减运算,只含字母与字母或字母的乘法(包括乘方)运算 (2)单项式的系数:单项式中数字因数叫做这个单项式的系数。例如:单项式22 7,2 1xy y x -的系数分别是 7,2 1 -,当单项式系数是1或-1时,“1”通常省略不写,如ab 就是ab ?1,系数是1;n -就是n ?-1,系数是-1. (3)单项式的次数(指数):一个单项式中,所有字母的指数的和叫做这个单项式的次数。如x 4的次数是1,z y x 3 2 3的次数是2+3+1=6;数学的次数是0,如3,-9等可以当作0次单项式。 一个单项式的次数是几就叫做几次单项式,如2 23 1 b a 中,a 与b 的指数和为4,则2 23 1b a 是四次单项式。 例1:指出下列各单项式的系数和次数 7 ,,5,33 2322y x bc a ab a π- 提示:圆周率π是常数,当单项式中含有π时,π是单项式的系数,且在计算单项式的次数时应注意不要加上π的指数。 2、多项式的有关概念 (1)多项式:几个单项式的和叫做多项式。其中,每个单项式叫做多项式的项,不含字母的项叫做常数项。如5232 +-x x 是多项式,它的项分别是2 3x ,x 2-和5,其中5是常数项。 (2)多项式的次数:多项式里次数最高的项的次数就是这个多项式的次数。如 23224+-x y 的次为是3,即“32x ”的次数。一个多项式中含有几项,最高次数是几次就 叫几次几项式。如6623 4 +-y y 叫做四次三项式。

单项式多项式概念与练习

4.4 整式课题 4.4 整式课时安排 1 教学目标 (1)掌握单项式,单项式的系数、次数的概念; (2) 多项式,多项式的项、次数,常数项的概念及整式的概念。 重点单项式、多项式、整式的判断。 难点单项式、多项式及整式概念之间的区别及联系。 教具准备多媒体,投影仪 教学过程一、新课引入 思考并回答下面的问题 ⑴ 2 2 3 3,2,, 4 xy x a ab - -这些代数式是怎样组成的?有什 么共同特点? ⑵222 34,32,3 x y a a a b -++--+这些代数式是怎样 组成的?和第⑴题中代数式相比有什么特点? 二、新课过程 单项式;由数与字母或字母与字母相乘组成的代数式叫做 单项式,单独一个数或字母也叫做单项式,如0,1,a - 单项式的系数:单项式中的数字因数叫做这个单项式的系 数; 单项式的次数:一个单项式中,所有字母的指数的和叫做 这个单项式的次数; 多项式:由几个单项式相加组成的代数式叫做多项式; 多项式的项:在多项式中,每个单项式叫做多项式的项, 不含字母的项叫做常数项; 多项式的次数:次数最高的项的次数就是这个多项式的次 数; 整式:单项式、多项式统称为整式。 课后反馈教学过程

2r r 注意:特别强调1,x y x x y -+等分母含有字母的代数式不是整式。 三、课内练习 1 、2223251,,3,,0,,,,2,533x x y x y a b m n x xy ab x y -+-+-----中,哪些是整式?哪些是单项式?哪些是多项式? 2、多项式236331 57628x y x x y ---是 次多项式,其 中第三项的系数是 。 3、半径为R 的圆的面积和边长为a 的正方形的面积和是 ,它是 次多项式。 四、典例分析 一个花坛的形状如图,它的两端是半径相等的半圆 ⑴求花坛的周长l ⑵花坛的面积S 解:⑴花坛的周长22l a r π=+ ⑵花坛的面积22S ar r π=+ 想一想: 222,2a r ar r ππ++分别是几 次多项式?分别由哪些项组成?每一项的系数 是多少? 变题练习 一个窗框的形状如图,已知窗框的周长为 l ,半圆的半径为r ; ⑴用关于,l r 的代数式表示该窗框的透光面积(窗框材料的宽度不计)?这个代数式是整式吗? ⑵如果周长l 为10cm ,π取3.14,用关于r 的代数式表示窗户的透光面积;当1,r m = 1.5,m 2m 时,窗户的透光面积怎样变化?你有什么发现? 五、反馈练习 见P103,课内练习。 六、合作学习 有长为l 的篱笆,利用它和房屋的一面墙围成如图形状的园 子,园子的宽t ; ⑴用关于,l t 的代数式表示园子的面积; ⑵当100,30l m t m ==时,求园子的面积。 a r t

相关主题
文本预览
相关文档 最新文档