当前位置:文档之家› 多项式的四则运算(数据结构)

多项式的四则运算(数据结构)

多项式的四则运算(数据结构)
多项式的四则运算(数据结构)

数据结构07082018

用链表实现多项式的四则运算

——数据结构第二次上机作业

班级07082

姓名丁敏

学号07082018

上机时间2011年3月31日

报告时间:2011年4月5日

实验目的:

熟练使用指针,熟悉链表及其操作;利用链表解决实际问题要求:

能够实现任意项有理多项式的加、减、乘、除、求模以及幂运算

多项式的除法注意除不尽的处理

测试用例尽可能多,且说明用例的必要性

用例必须包含一个自己系数为自己的学号

摘要:

多项式的四则运算问题是个很有趣的问题,它类似于有理数的四则运算,但又不仅仅于此.本篇课程论文重点研究了数据结构中多项式的四则运算问题。本论文的程序是通过Microsoft Visual Studio 2010编译,来解决多项式的加、减、乘、除四则运算问题,从而达到了解数据结构的实用性及程序语言对于数学问题研究的重要性的目的。

正文:

0需求分析:

0.1问题描述

编写程序来实现多项式的四则运算。

0.2基本要求

⑴输入多项式的系数与指数,输入值为float型,输出值为float型;

⑵能够完成多项式之间的四种计算方式(+、-、*、/)。

0.3函数说明

typedef struct PolyNode:结构体变量,定义 int型指数和float 系数;

PolyList CreatePolyList():创建多项式列表,返回头指针;

DisplayPolyList(PolyList Poly):显示多项式;

DestroyPolyList(PolyList L):释放链表所用存储空间;

MergePoly(PolyList Poly):将多项式合并同类项;

SortPoly(PolyList Poly):将多项式按升序排列;

PolyList PolyAdd(PolyList PolyA , PolyList PolyB):多项式相加,返回和多项式链表头指针;

PolyList PolySub(PolyList polyA , PolyList polyB):多项式相减,返回差多项式链表头指针;

PolyList PolyMutiply(PolyList PolyA , PolyList PolyB):多项式相乘,结果由Poly c返回;

PolyList PolyDivide(PolyList PolyA , PolyList PolyB):多项式相除,商和余数用系数为0的结点分开。

1程序执行结果及分析:

1.1执行结果

*******多项式的创建*******

请输入多项式的第1项的系数和指数(用逗号分开):3,2

请输入多项式的第2项的系数和指数:2,0

请输入多项式的第3项的系数和指数:0,0

输入的多项式A: 3.000000*x^2 + 2.000000*x^0

请输入多项式的第1项的系数和指数(用逗号分开):2,2

请输入多项式的第2项的系数和指数:3,1

请输入多项式的第3项的系数和指数:0,0

输入的多项式B: 2.000000*x^2 + 3.000000*x^1

合并排序后的多项式A: 3.000000*x^2 + 2.000000*x^0

合并排序后的多项式B: 2.000000*x^2 + 3.000000*x^1

*******多项式的四则运算*******

A+B: 5.000000*x^2 + 3.000000*x^1 + 2.000000*x^0

A-B: 1.000000*x^2 + -3.000000*x^1 + 2.000000*x^0

A*B: 6.000000*x^4 + 9.000000*x^3 + 4.000000*x^2 + 6.000000*x^1 A/B: 1.500000*x^0 ......-4.500000*x^1 + 2.000000*x^0

请按任意键继续. . .

*******多项式的创建*******

请输入多项式的第1项的系数和指数(用逗号分开):1,1

请输入多项式的第2项的系数和指数:0,0

输入的多项式A: 1.000000*x^1

请输入多项式的第1项的系数和指数(用逗号分开):0,0

输入的多项式B: 0

合并排序后的多项式A: 1.000000*x^1

合并排序后的多项式B: 0

*******多项式的四则运算*******

A+B: 1.000000*x^1

A-B: 1.000000*x^1

A*B: 0

Error:除项为空!

A/B:

请按任意键继续. . .

*******多项式的创建*******

请输入多项式的第1项的系数和指数(用逗号分开):2,3

请输入多项式的第2项的系数和指数:2/3,1

(出现乱码)

1.2测试用例

(1) 错误!未找到引用源。

错误!未找到引用源。

(2)错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

(3)错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

(4)输入:错误!未找到引用源。

输出:错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

错误!未找到引用源。

1.3结果分析

通过三次的运行,一二两次成功,但第三次乱码。从第三次的运行来看由于输入与所要求的不一样二出现乱码,故非程序的问题,所以本程序符合多项式的运算要求,是正确的。

2程序的评价:

⑴程序符合需求,能够有效地运行多项式之间的运算;

⑵程序结构合理,具有层次性,易读;

⑶程序运行界面友好,且不与别的程序相冲突

⑷由于程序会出乱码现象,所以还有一定的缺陷;

3总结:

本文的重点是对多项式的各种关系通过编程进行处理。笔者通过通过Microsoft Visual Studio 2010编译完成了所要求的内容。值得指出的是:本程序层次性较强,易读,且具有较高的精度,如进一步改善,将会有很强的适用性。

笔者当然也碰到许多的问题,比如算法设计上仍有很大不足,流程图画的不是很熟练,全局变量不会定义,main函数的顺序位置等。这些问题都可以通过实践来解决,总之,一句话熟能生巧。

附录

#include

#include

#include//结点定义

typedef struct PolyNode

{

int exp; //指数

float coef; //系数

PolyNode* next;

}PolyNode , * PolyList;

PolyList CreatePolyList(); //创建多项式链表,返回头指针

void DisplayPolyList(PolyList Poly);//显示多项式

void DestroyPolyList(PolyList L);//释放链表所用存储空间

void MergePoly(PolyList Poly);//将多项式和并同类项

void SortPoly(PolyList Poly);//将多项式按升序排列

PolyList PolyAdd(PolyList PolyA , PolyList PolyB);//多项式相加,返回和多项式链表头指针

PolyList PolySub(PolyList polyA , PolyList polyB);//多项式相减,返回差多项式链表头指针

PolyList PolyMutiply(PolyList PolyA , PolyList PolyB);//多项式相乘,结果由PolyC返回

PolyList PolyDivide(PolyList PolyA , PolyList PolyB);//多项式相除,结果存到PolyC中,商和余数用系数为0的结点分开PolyList CreatePolyList()

{

PolyNode *s,*rear,*head;

int e; //指数

float c; //系数

int n=1; //计数器

head =(PolyNode *)

malloc(sizeof(PolyNode));

rear = head;

//输入多项式的系数和指数,若输入系数为0退出

printf("请输入多项式的第%d项的系数和指数(用逗号分开):" , n++);

scanf("%f,%d" , &c , &e);

while(fabs(c) > 1e-6)

{ s = (PolyNode

*)malloc(sizeof(PolyNode));

s->exp = e;

s->coef = c;

rear->next = s;

rear = s;

printf("请输入多项式的第%d项的系数和指数:" , n++);

scanf("%f,%d" , &c , &e);

}

rear->next = NULL;

return head;

}

//计算两个多项式(可不按顺序排列),结果存到链表PolyC中,并返回

PolyList PolyAdd(PolyList PolyA , PolyList PolyB)

{

PolyList PolyC ;

SortPoly(PolyA);

SortPoly(PolyB);

float sum=0;//存储两项系数和

PolyNode *pa , *pb , *rear , *s ;

PolyC = (PolyNode

*)malloc(sizeof(PolyNode));

pa = PolyA->next;

pb = PolyB->next;

rear = PolyC;

rear->next = NULL;

while(pa && pb)

{

if(pa->exp == pb->exp)

{sum = pa->coef+pb->coef;

if(fabs(sum)>1e-6) //如果两两系数不为0,则将两项和存入s中,并插入PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = sum;

s->exp = pa->exp;

rear->next = s;

rear = s;

}

//pa,pb指针后移

pa = pa->next;

pb = pb->next;

}

else if(pa->exp>pb->exp) //若pa指数大于pb指数,将pa结点副本插入到PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = pa->coef;

s->exp = pa->exp;

rear->next = s ;

rear = s ;

pa = pa->next;

}

else //若pb指数大于pa指数,将pb结点副本插入到PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = pb->coef;

s->exp = pb->exp;

rear->next = s;

pb = pb->next;

rear = s ;

}

}

while(pa)

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = pa->coef;

s->exp = pa->exp;

rear->next = s;

pa = pa->next;

rear = s ;

}

while(pb)

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = pb->coef;

s->exp = pb->exp;

rear->next = s;

pb = pb->next;

rear = s ;

}

rear->next = NULL;

return PolyC;

}

void DestroyPolyList(PolyList L)

{

PolyNode * p , *temp;

p = L;

while(p!=NULL)

{temp = p ; p = p->next;

free(temp); }

}

//将多项式和并同类项

void MergePoly(PolyList Poly)

{

PolyNode * p , *q , * rear ,*pre ,* temp;

rear = Poly;

p = Poly->next ;

while(rear->next!=NULL)

{

q = p->next;

pre = p;

temp = p;

while(q)

{

if(p->exp == q->exp)

{

p->coef+=q->coef;

if(fabs(p->coef)>1e-6)

{

pre->next =

q->next;

temp = q;

q = temp->next;

free(temp);

}

else //两项系数

和为0,释放结点p和q

{

rear->next =

p->next;

temp = p;

p = temp->next;

free(temp);

pre->next =

q->next;

temp = q;

q = temp->next;

free(temp);

}

}

else{pre= q ; q = q->next;} //指数不等,指针q后移

}

//与p指数相同的节点合并完毕,或者没有找到,p后移

rear = p;

p = rear->next;

}

rear->next = NULL;

}

//将多项式按升序排列

void SortPoly(PolyList Poly)

{

PolyList rear , p ,temp , prior;

if(!Poly->next) return; //若多项式为空,返回

MergePoly(Poly);

rear = Poly;

int exp;//记录当前啊搜索项中的最小指数

while(rear->next!=NULL)

{

exp = rear->next->exp;

p = rear->next ;

prior = rear;

temp = prior->next ;

while(p!=NULL)

{

if(p->exp > exp)

{

exp = p->exp ;

temp = p ;

p = temp->next ;

}

else

{

p = p->next ;

if(rear->next->next ==NULL) return; //p为最后一个元素且指数最小,提前返回

}

}

while(prior->next != temp) prior = prior->next ;

prior->next = temp->next;

temp->next = rear->next ;

rear->next = temp;

rear = rear->next ;

}

}

//多项式相减,返回差多项式链表头指针PolyList PolySub(PolyList PolyA , PolyList PolyB)

{

PolyList PolyC ;

SortPoly(PolyA);

SortPoly(PolyB);

float sum =0 ;//存储两项系数差

PolyNode *pa , *pb , *rear , *s ;

PolyC = (PolyNode

*)malloc(sizeof(PolyNode));

pa = PolyA->next;

pb = PolyB->next;

rear = PolyC;

rear->next = NULL;

while(pa && pb)

{

if(pa->exp == pb->exp)

{

sum = pa->coef-pb->coef;

if(fabs(sum)>1e-6) //如果两两系数不为0,则将两项和存入s中,并插入PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = sum;

s->exp = pa->exp;

rear->next = s;

rear = s;

}

//pa,pb指针后移

pa = pa->next;

pb = pb->next;

}

else if(pa->exp>pb->exp) //若pa指数大于pb指数,将pa结点副本插入到PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = pa->coef;

s->exp = pa->exp;

rear->next = s ;

rear = s ;

pa = pa->next;

}

else //若pb指数大于pa指数,将pb结点副本插入到PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = -pb->coef;

s->exp = pb->exp;

rear->next = s;

pb = pb->next;

rear = s ;

}

}

while(pa)

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = pa->coef;

s->exp = pa->exp;

rear->next = s;

pa = pa->next;

rear = s ;

}

while(pb)

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = -pb->coef;

s->exp = pb->exp;

rear->next = s;

pb = pb->next;

rear = s ;

}

rear->next = NULL;

return PolyC;

}

//输出多项式

void DisplayPolyList(PolyList Poly) {

if(Poly == NULL)

{printf("\n");return;}

PolyNode *p=Poly->next ;

if(p == NULL){printf("0\n"); return;} //如果链表为空提前退出

while(p->next!=NULL)

{

if(fabs(p->coef)>1e-6)

{

if(fabs(p->next->coef)>1e-6)

printf("%f*x^%d + " , p->coef , p->exp);

else printf("%f*x^%d " , p->coef , p->exp);

}

else printf("......");//输出分割点

p = p->next ;

}

if(fabs(p->coef)>1e-6)printf("%f* x^%d" , p->coef , p->exp);

printf("\n");

}

//多项式相乘,结果由PolyC返回

PolyList PolyMutiply(PolyList PolyA , PolyList PolyB)

{

PolyList PolyC;

PolyNode *pa , *pb , *pc_pre , *pc , *s;

if(PolyA==NULL || PolyB==NULL) return NULL; //若某一个多项式为空,返回

PolyC =

(PolyNode*)malloc(sizeof(PolyNode));

pc = PolyC ;

pc->next = NULL;

if(PolyA->next==NULL ||

PolyB->next==NULL) return PolyC;

SortPoly(PolyA);

SortPoly(PolyB);

pa = PolyA->next ;

pb = PolyB->next;

s =

(PolyNode*)malloc(sizeof(PolyNode));

s->coef = pa->coef * pb->coef ;

s->exp = pa->exp + pb->exp ;

if(pc->next == NULL)

{

pc->next = s ;

pc =s ;

pc->next = NULL ;

} //直接插入第一个结点

while(pa)

{

pb = PolyB->next ;

while(pb)

{

//两项对应相乘,结果存入到s中

pc = PolyC->next;

if(pa == PolyA->next && pb==PolyB->next) //避免重复插入第一个结点

{

pb=pb->next;

if(pb == NULL) break;

}

s =

(PolyNode*)malloc(sizeof(PolyNode));

s->coef = pa->coef *

pb->coef ;

s->exp = pa->exp + pb->exp ;

//查找s合适的插入位置,使得插入后PolyC仍为升序排列

while( pc && pc->exp >

s->exp) { pc_pre = pc ;

pc=pc_pre->next ;}

if(pc

==NULL){pc_pre->next=s ; s->next

=NULL;pb=pb->next;}

else if( pc->exp <

s->exp){pc_pre->next = s ; s->next = pc ; pb=pb->next; }

else if(s->exp == pc->exp )

{

pc->coef += s->coef ;

free(s);

if(fabs(pc->coef)<1e-6 ){pc_pre-> next = pc->next ; free(pc);}

pb = pb->next;

}

}

pa = pa->next;

}

return PolyC;

}

//多项式相除,结果存到PolyC中,商和余数用系数为0的结点分开

PolyList PolyDivide(PolyList PolyA , PolyList PolyB)

{

if(!PolyA || !PolyB) return NULL;

if(PolyB->next ==

NULL){printf("Error:除项为

空!\n");return NULL;}

PolyList PolyT1 , PolyT2 , pt , s , PolyC , p , s_pre;

PolyC =

(PolyList)malloc(sizeof(PolyNode));

PolyC->next=NULL;

if(PolyA->next==NULL) return PolyC;

p = PolyA->next;

PolyT1 =

(PolyList)malloc(sizeof(PolyNode));

pt = PolyT1;

s_pre=(PolyList)malloc(sizeof(Pol yNode));

while(p) //将PollyA复制到PolyT 中

{

s =

(PolyList)malloc(sizeof(PolyNode));

s->coef = p->coef ;

s->exp = p->exp ;

pt->next = s;

pt = s;

p = p->next ;

}

pt->next=NULL;

//将商存入到PolyC中

p = PolyC;

while(PolyT1->next &&

PolyT1->next->exp >= PolyB->next->exp) {

s =

(PolyList)malloc(sizeof(PolyNode));

s_pre->next = s;

s->next=NULL;

s->coef =

PolyT1->next->coef/PolyB->next->coef;

s->exp = PolyT1->next->exp - PolyB->next->exp;

p->next = s;

p = s;

//PolyT2 =

(PolyList)malloc(sizeof(PolyNode));

PolyT2 = PolySub(PolyT1 , PolyMutiply(PolyB , s_pre));

DestroyPolyList(PolyT1);

PolyT1 = PolyT2;

}

//设置分隔结点

s

=(PolyList)malloc(sizeof(PolyNode));

s->coef = 0;

s->exp = 0;

p->next = s;

p = s;

p->next = PolyT1->next; //将余项PolyT复制到PolyC中

free(PolyT1);

return PolyC;

}

void main()

{

PolyList PolyA, PolyB , PolyC;

//初始化PolyA,PolyB,以0结束

printf("*******多项式的创建

*******\n");

} PolyA = CreatePolyList();

printf("输入的多项式A: ");

DisplayPolyList(PolyA);

printf("\n");

PolyB = CreatePolyList();

printf("输入的多项式B: ");

DisplayPolyList(PolyB);

printf("\n");

SortPoly(PolyA);

printf("合并排序后的多项式A: ");

DisplayPolyList(PolyA);

SortPoly(PolyB);

printf("合并排序后的多项式B: ");

DisplayPolyList(PolyB);

printf("*******多项式的四则运算

*******\n");

//PolyA + PolyB

PolyC = PolyAdd(PolyA , PolyB);

printf("A+B: ");

DisplayPolyList(PolyC);

DestroyPolyList(PolyC);

//PolyA - PolyB

PolyC = PolySub(PolyA , PolyB);

printf("A-B: ");

DisplayPolyList(PolyC);

DestroyPolyList(PolyC);

//PolyA*PolyB

PolyC = PolyMutiply(PolyA , PolyB);

printf("A*B: ");

DisplayPolyList(PolyC);

DestroyPolyList(PolyC);

//PolyA/PolyB

PolyC = PolyDivide(PolyA , PolyB);

printf("A/B: ");

DisplayPolyList(PolyC);

DestroyPolyList(PolyC);

多项式乘以多项式

(ac+ad+bc+cd) 3、大长方形可以看成是长分别a、b,宽都是(c+d)的2个小长方形,(如图①)组成的这个图形的面积为a(c+d)+b(c+d) 4、大长方形可以看成是长分别为c、d,宽都是(a+b)的2个小长方形组成的,其面积是c(a+b)d(a+b); 这四种方法表示同一图形的面积,因此,它们是相等的,所以(a+b)(c+d)=a(c+d)+b(c+d)=c(a+b)+d(a+b)=ac+ad+bc+bd. 问题二如果把(c+d)看成整体,你能将(a+b)·(c+d)转化成单项式乘多项式吗?[或如果把(a+b)·(c+d)转化成单项式乘多项式吗?] 从代数运算的角度解释,用乘法分配律:(a+b)·(c+d)=a(c+d)+b(c+d)把其中的一个多项式看成一个整体[(a+b)·(c+d)]=(a+b)c+(a+b)d] 问题三如何计算(a+b)(c+d)? (a+b)(c+d)=a(c+d)+b(c+d)=ac+ad+bc+bd 则(a+b)·(c+d)=ac+ad+bc+bd 总结规律,揭示法则: 对于的计算过程可以表示为: 问题四引导学生观察上式特征,讨论并回答: (1) 你能用文字描述多项式乘多项式的运算法则吗? (2)多项式与多项式相乘的步骤应该是什么? 多项式乘多项式的运算法则(板): 多项式与多项式相乘,先用一个多项式的每一项乘另一个多项式的每一项,再把所得的积相加。 (一般地,多项式与多项式相乘,①先用一个多项式的每一项乘以另一个多项式的每一项;②再把所得的结果相加。) 注意: 1、应用法则时,应提醒学生不要漏项; 2、应用多项式乘法法则计算后,所得的积相加减时,应合并同类项 (三)例题分析,领悟新知 例1计算:

力 扣 数 据 结 构 与 算 法

前端如何搞定数据结构与算法(先导篇) 「观感度:?」 「口味:锅包肉」 「烹饪时间:20min」 本文已收录在Github? 为什么要学习数据结构与算法? 在0202年的今天,由于每天被无数的信息轰炸,大多数人已经变得越来越浮躁了,并且丧失了独立思考的能力。 你可能会经常听到这样的感慨: 技术人究竟能走多远?我遇到了天花板 35岁的程序员要如何面对中年危机? 技术更新太快,好累,学不动了 然后,你也变得焦虑起来。那你有没有静下心来想过,如何才能抵御年龄增长并且使自己增值呢? 无非是终身学习,持续修炼自己的内功。内功也就是基础知识和核心概念,这些轰轰烈烈发展的技术本质,其实都是基础知识,也就是我们在大学里学过的基础课-程。 操作系统 计算机组成原理 计算机网络 编译原理

设计模式 数据结构与算法 这也就是为什么越靠谱的面试官越注重你基础知识的掌握程度,为什么越牛的的企业越重视你的算法能力。因为当你拥有了这些,你已经比大多数人优秀了。你的天花板由你自己来决定,大家口中的中年危机可能并不会成为你的危机。新技术来临时,你对它的本质会看得更加透彻,学起来会一通百通。这样的人才,公司培养你也会花费更少的成本。 (不过,一辈子做个开开心心的 CRUD Boy 也是一种选择。) 数据结构与算法之间的关系 Rob Pikes 5 Rules of Programming中的第五条是这样说的: Data dominates. If youve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. 数据占主导。如果您选择了正确的数据结构并组织得当,那么这些算法几乎总是不言而喻的。数据结构而非算法是编程的核心。 瑞士计算机科学家,Algol W,Modula,Oberon 和 Pascal 语言的设计师 Niklaus Emil Wirth 写过一本非常经典的书《Algorithms + Data Structures = Programs》,即算法 + 数据结构 = 程序。 我们可以得出结论,数据结构与算法之间是相辅相成的关系。数据结构服务于算法,算法作用于特定的数据结构之上。 数据结构与算法好难,怎么学?

多项式与多项式相乘同步练习(含答案).doc

第 3 课时多项式与多项式相乘 要点感知多项式与多项式相乘,先用一个多项式的_____乘另一个多项式的_____,再把所得的积_____.( a+b)( p+q)=_____. 预习练习1- 1填空:(1)(a+4)(a+3)=a·a+a·3+4·_____+4×3=_____; (2)(2 x- 5y)(3 x-y)=2 x·3x+2x·_____+(- 5y) ·3x+( -5y) ·_____=_____. 1- 2计算:(x+5)(x-7)=_____;(2x-1)·(5x+2)=_____. 知识点 1直接运用法则计算 1.计算: (1)( m+1)(2 m- 1) ;(2)(2 a- 3b)(3 a+2b) ;(3)(2 x- 3y)(4 x2+6xy +9y2) ;(4)( y+1) 2;(5) a( a-3)+(2 -a)(2+ a). 2. 先化简,再求值:(2 x- 5)(3 x+2) - 6( x+1)( x- 2), 其中x= 1 . 5 知识点 2多项式乘以多项式的应用 3.若一个长方体的长、宽、高分别是3x- 4,2 x- 1 和x,则它的体积是 ( ) - 5x2+4x-11x2+4x-4x2-4x2+x+4 4. 为参加市里的“灵智星”摄影大赛,小阳同学将同学们参加“义务献爱心”活动的照片放大为长为 a 厘米,宽为

3 a 厘米的长方形形状,又精心在四周加上了宽 2 厘米的装饰彩框,那么小阳同学的这幅摄影作品照片占的面积是 4 _____平方厘米 . 5. 我校操场原来的长是 2x 米,宽比长少 10 米,现在把操场的长与宽都增加了 5 米,则整个操场面积增加了 _____ 平方米 . 知识点 3 ( x +p )( x +q )= x 2+( p +q ) x +pq 6. 下列多项式相乘的结果为 x 2+3x - 18 的是 ( ) A.( x - 2)( x +9) B.( x +2)( x - 9) C.( x +3)( x - 6) D.( x -3)( x +6) 7. 已知 ( x +1)( x - 3)= x 2 +ax +b ,则 a , b 的值分别是 ( ) =2 , b =3 =- 2, b =-3 =- 2, b =3 =2, b =- 3 8. 计算: (1)( x +1)( x +4) (2)( m - 2)( m +3) (3)( y +4)( y +5) (4)( t -3)( t +4). 9. 计算: (1)( - 2 n )( - - ) ; (2)( x 3 - 2)( x 3+3) - ( x 2 ) 3+ 2 · ; m m n x x

数据结构经典例题

数据结构例题(及答案) 项目一习题(答案) 一选择题 1. 算法的计算量的大小称为计算的(B )。 A( 效率 B. 复杂性 C. 现实性 D. 难度 2.算法的时间复杂度取决于(C ) A(问题的规模 B. 待处理数据的初态 C. A和B 3(从逻辑上可以把数据结构分为(C )两大类。 A(动态结构、静态结构 B(顺序结构、链式结构 C(线性结构、非线性结构 D(初等结构、构造型结构 4(连续存储设计时,存储单元的地址(A )。 A(一定连续 B(一定不连续 C(不一定连续 D(部分连续,部分不连续 5. 以下属于逻辑结构的是(C )。 A(顺序表 B. 哈希表 C.有序表 D. 单链表 二、判断题 1. 数据元素是数据的最小单位。(×) 2. 记录是数据处理的最小单位。(×) 3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;(×) 4(程序一定是算法。(×) 5. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。(×) 6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。(×) 7. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。(?)

8. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. (×) 三、填空 1(数据的物理结构包括数据元素的表示和数据元素间关系的表示。 2. 对于给定的n个元素,可以构造出的逻辑结构有集合,线性结构,树形 结构,图状结构或网状结构四种。 3(数据的逻辑结构是指数据的组织形式,即数据元素之间逻辑关系的总体。而 逻辑关系是指数据元素之间的关联方式或称“邻接关系”。 4(一个数据结构在计算机中表示(又称映像) 称为存储结构。 5(抽象数据类型的定义仅取决于它的一组逻辑特性,而与在计算机内部如何表 示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响 其外部使用。 6(数据结构中评价算法的两个重要指标是算法的时间复杂度和空间复杂度。 7. 数据结构是研讨数据的逻辑结构和物理结构,以及它们之间的相互 关系,并对与这种结构定义相应的操作(运算),设计出相应的算法。 ( 一个算法具有5个特性: 有穷性、确定性、可行性,有零个或多个输入、 有一个或多个输8 出。 四、应用题 1. 1. 数据结构是一门研究什么内容的学科, 答:数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象 及对象间的关系和施加于对象的操作等的学科 2. 2. 数据元素之间的关系在计算机中有几种表示方法,各有什么特点, 答:四 种表示方法

多项式乘以多项式

第3课时 多项式乘以多项式 姓名: 01 基础题 知识点1 直接运用法则计算 1.计算(2x -1)(5x +2)的结果是( ) A .10x 2-2 B .10x 2-5x -2 C .10x 2+4x -2 D .10x 2-x -2 2.填空:(2x -5y)(3x -y)=2x·3x +2x· +(-5y)·3x +(-5y)· = . 3.计算: (1)(2a +b)(a -b)= ; (2)(x -2y)(x 2+2xy +4y 2)= . 4.计算: (1)(m +1)(2m -1); (2)(2a -3b)(3a +2b); (3)(2x -3y)(4x 2+6xy +9y 2); . (4)1 2(2x -y)(x +y); . (5)a(a -3)+(2-a)(2+a). 5.先化简,再求值:(2x -5)(3x +2)-6(x +1)(x -2),其中x =1 5 . 知识点2 多项式乘以多项式的应用 6.若一个长方体的长、宽、高分别是3x -4,2x -1和x ,则它的体积是( ) A .6x 3-5x 2+4x B .6x 3-11x 2+4x C .6x 3-4x 2 D .6x 3-4x 2+x +4 7.为参加市里的“灵智星”摄影大赛,小阳同学将同学们参加“义务献爱心”活动的照片放大为长为a 厘米,宽为3 4 a 厘米的长方形形状,又精心在 四周加上了宽2厘米的装饰彩框,那么小阳同学的这幅摄影作品照片占的面积是( )平方厘米. 8.我校操场原来的长是2x 米,宽比长少10米,现在把操场的长与宽都增加了5米,则整个操场面积增加 了 平方米. 知识点3 (x +p )(x +q )=x 2+(p +q )x +pq 9.下列多项式相乘的结果为x 2+3x -18的是( ) A .(x -2)(x +9) B .(x +2)(x -9) C .(x +3)(x -6) D .(x -3)(x +6) 10.计算: (1)(x -3)(x -5)= ; (2)(x +4)(x -6)= . 11.若(x +3)(x +a)=x 2-2x -15,则a = . 12.计算: (1)(x +1)(x +4); (2)(m -2)(m +3); (3)(y +4)(y +5); (4)(t -3)(t +4). 02 中档题 13.已知(x +1)(x -3)=x 2+ax +b ,则a ,b 的值分别是( ) A .a =2,b =3 B .a =-2,b =-3 C .a =-2,b =3 D .a =2,b =-3 14.已知(4x -7y)(5x -2y)=M -43xy +14y 2,则M

人教版八年级上册14.14整式的乘法 多项式与多项式相乘

第2课时 多项式与多项式相乘 一、选择题(每小题2分,共20分) 1.1.化简的结果是( ) A .0 B . C . D . 2.下列计算中,正确的是( ) A . B . C . D . 3.若的积中不含有的一次项,则的值是( ) A .0 B .5 C .-5 D .-5或5 4.下列各式中,从左到右的变形是因式分解的是( ) A . B . B . D . 5.如图,在矩形ABCD 中,横向阴影部分是矩形,另一阴影部分是平行四边行.依 照图中标注的数据,计算图中空白部分的面积为( ) A . B . C . D . 6.三个连续奇数,中间一个是,则这三个数之积是( A . B . C . D . 7.如果,,那么的值是( ) A .2 B .-8 C .1 D .-1 8.如果多项式能写成两数和的平方,那么的值为( ) A .2 B .±2 C .4 D .±4 9.已知,,,则、、的大小关系是( ) A .>> B .>> C .<< D .>> 10.多项式的最小值为( ) A .4 B .5 C .16 D .25 二、填空题(每小题2分,共20分) 11.已知,则= . 12.计算:= . 13.计算:= . 14.计算:= . 15.计算:= . 16. . 17.分解因式:= . 2)2()2(a a a --?-22a 26a -24a -ab b a 532=+33a a a =?a a a =-56222)(b a ab =-)5)((-+x k x x k a a a a +=+2)1(b a b a b a b a b a -+-+=-+-))((22)4)(4(422y x y x y x -+=-))((222a bc a bc c b a -+=+-2c ac ab bc ++-2c ac bc ab +--ac bc ab a -++2ab a bc b -+-22k k k 43-k k 883-k k -34k k 283-7)(2=+b a 3)(2=-b a ab 224y kxy x ++k 3181=a 4127=b 619=c a b c a b c a c b a b c b c a 251244522+++-x y xy x 23-=a 6a 3222)()3(xy y x -?-)13 12)(3(22+--y x y xy )32)(23(+-x x 22)2()2(+-x x +24x (2)32(9)-=+x 23123xy x - ↑

数据结构(C语言)【经典题库】含标准答案

《数据结构与算法》复习题 选择题 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑 B.存储 C.逻辑和存储 D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。A.数据的处理方法 B.数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何 B.结点个数的多少 C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位

C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进 C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是 O(n2) 。 s =0; for( I =0; i

多项式与多项式相乘同步练习(含答案)

第3课时 多项式与多项式相乘 要点感知 多项式与多项式相乘,先用一个多项式的_____乘另一个多项式的_____,再把所得的积_____.(a +b )(p +q )=_____. 预习练习1-1 填空:(1)(a +4)(a +3)=a · a +a ·3+4·_____+4×3=_____; (2)(2x -5y )(3x -y )=2x ·3x +2x ·_____+(-5y )·3x +(-5y )·_____=_____. 1-2 计算:(x +5)(x -7)=_____;(2x -1)·(5x +2)=_____. 知识点1 直接运用法则计算 1.计算: (1)(m +1)(2m -1); (2)(2a -3b )(3a +2b ); (3)(2x -3y )(4x 2+6xy +9y 2); (4)(y +1)2; (5)a (a -3)+(2-a )(2+a ). 2.先化简,再求值:(2x -5)(3x +2)-6(x +1)(x -2),其中x =51. 知识点2 多项式乘以多项式的应用 3.若一个长方体的长、宽、高分别是3x -4,2x -1和x ,则它的体积是( ) -5x 2+4x -11x 2+4x -4x 2 -4x 2+x +4 4.为参加市里的“灵智星”摄影大赛,小阳同学将同学们参加“义务献爱心”活动的照片放大为长为a 厘米,宽为43a 厘米的长方形形状,又精心在四周加上了宽2厘米的装饰彩框,那么小阳同学的这幅摄影作品照片占的面积是_____平方厘米. 5.我校操场原来的长是2x 米,宽比长少10米,现在把操场的长与宽都增加了5米,则整个操场面积增加了_____平方米. 知识点3 (x +p )(x +q )=x 2+(p +q )x +pq 6.下列多项式相乘的结果为x 2+3x -18的是( ) A.(x -2)(x +9) B.(x +2)(x -9) C.(x +3)(x -6) D.(x -3)(x +6) 7.已知(x +1)(x -3)=x 2+ax +b ,则a ,b 的值分别是( ) =2,b =3 =-2,b =-3 =-2,b =3 =2,b =-3 8.计算: (1)(x +1)(x +4) (2)(m -2)(m +3) (3)(y +4)(y +5) (4)(t -3)(t +4).

数据结构经典例题

数据结构经典例题 1.设计一个算法将L拆分成两个带头节点的单链表L1和L2。 void split(LinkList *&L,LinkList *&L1,LinkList *&L2) { LinkList *p=L->next,*q,*r1; //p指向第1个数据节点 L1=L; //L1利用原来L的头节点 r1=L1; //r1始终指向L1的尾节点 L2=(LinkList *)malloc(sizeof(LinkList));//创建L2的头节点 L2->next=NULL; //置L2的指针域为NULL while (p!=NULL) { r1->next=p; //采用尾插法将*p(data值为ai)插入L1中 r1=p; p=p->next; //p移向下一个节点(data值为bi) q=p->next; //由于头插法修改p的next域,故用q保存*p的后继节点 p->next=L2->next; //采用头插法将*p插入L2中 L2->next=p; p=q; //p重新指向ai+1的节点 } r1->next=NULL; //尾节点next置空 } 2.查找链表中倒数第k个位置上的节点(k为正整数)。若查找成功,算法输出该节点的data域的值,并返回1;否则,只返回0。 typedef struct LNode {int data; struct LNode *link; } *LinkList; int Searchk(LinkList list,int k) { LinkList p,q; int count=0; p=q=list->link; while (p!=NULL) { if (countlink; p=p->link; } if (count

新人教部编版八年级数学上册第2课时 多项式与多项式相乘

14.1.4整式的乘法 第2课时多项式与多项式相乘 一、新课导入 1.导入课题: 今天我们继续研究整式的乘法,重点探讨多项式乘以多项式的运算法则. 2.学习目标: (1)能说出多项式与多项式相乘的法则. (2)能灵活地运用法则进行运算. 3.学习重、难点: 重点:多项式与多项式的乘法法则的理解及应用. 难点:多项式乘以多项式时负号的用法. 二、分层学习 1.自学指导: (1)自学内容:探究多项式乘以多项式的运算法则. (2)自学时间:5分钟. (3)自学方法:类比上节课单项式乘以多项式的研究方法来探讨多项式乘以多项式的运算法则. (4)探究提纲: ①如图,为了扩大街心花园的绿地面积,把一块原长a米、宽m 米的长方形绿地,长增加了b米,宽增加了n米.你能用两种方法求出扩大后的绿地面积?看谁能写出来?

方法1:(a+b)(m+n), 方法2:am+an+bm+bn. ②由①你得到的等式为(a+b)(m+n)=am+an+bm+bn. ③在上节课中,我们由等式p(a+b+c)=pa+pb+pc得到单项式乘以多项式的运算法则,那么由②的等式你得到什么运算法则?并用文字表述此法则. 多项式乘多项式法则:多项式与多项式相乘,先用一个多项式的每一项乘另一个多项式的每一项,再把所得的积相加. ④试一试(x+y)(2x+y)=2x2+3xy+y2. 2.自学:学生结合探究提纲进行自学. 3.助学: (1)师助生: ①明了学情:通过看、问、查的方式了解学生的探究过程和结果是否正确. ②差异指导:关注学困生在多项式乘以多项式中出现漏乘的问题. (2)生助生:学生之间相互交流帮助. 4.强化: (1)总结交流:多项式与多项式相乘,就是先用一个多项式中的每一项去乘另一个多项式的每一项,再把所得的积相加.例如:(a+b)(m+n)= am+an+bm+bn. (2)计算:①(x+2)(x-3)②(3x-1)(2x+1) =x2-x-6 =6x2+x-1

数据结构经典算法 C语言版

//插入排序法 void InsertSort() { int s[100]; int n,m,j,i=0,temp1,temp2; printf("请输入待排序的元素个数:"); scanf("%d",&n); printf("请输入原序列:"); for (i=0; is[n-1]); s[n]=m; for (i=0; im) { temp1=s[i]; s[i]=m; for (j=i+1; j

//堆排序 static a[8] = {0,25,4,36,1,60,10,58,}; int count=1; void adjust(int i,int n) { int j,k,r,done=0; k = r = a[i]; j = 2*i; while((j<=n)&&(done==0)) { if(j=a[j]) done = 1; else { a[j/2] = a[j]; j = 2* j; } } a[j/2] = r; } void heap(int n) { int i,j,t; for(i =n/2;i>0;i--) adjust(i,n); printf("\n初始化成堆===> "); for(i = 1;i < 8;i++) printf("%5d",a[i]); for(i = n-1;i>0;i--) { t = a[i+1]; a[i+1] = a[1]; a[1] = t; adjust(1,i); printf("\n第%2d步操作结果===>",count++); for(j = 1;j<8;j++) printf("%5d",a[j]); } }

多项式乘以多项式教学设计

《多项式乘以多项式》教学设计 朱宾琪教学目标: 知识与技能: 1、探索多项式与多项式相乘的乘法法则。 2. 能灵活地进行整式的乘法运算。 过程与方法: 1、经历探索多项式与多项式相乘的乘法法则的过程,体会乘法分配律的作用以及“整体”和“转化”的数学思想; 2、通过对乘法法则的探索,归纳与描述,发展有条理思考的能力和语言表达能力; 情感、态度与价值观 体验学习和把握数学问题的方法,树立学好数学的信心,培养学习数学的兴趣。 教学重点:多项式的乘法法则及其应用。 教学难点:探索多项式的乘法法则,灵活地进行整式的乘法运算。关键:多项式的乘法应先转化为单项式与多项式相乘进行运算,进一步转化为单项式的乘法,紧紧扣住这一线索。 教学方法:小组合作,自主学习 教学过程: 一、课前提问 师:1、多项式与多项式相乘的法则是什么?

依据是什么? 2、多项式与多项式相乘,结果的项数与原多项式的项数有何关系? 3、积的每一项的符号由谁决定? 计算: )32(3)4() 53(2)3() 35(4)2() 32(7)1(23322222xy xy y x b a a ax a ax b ab a +---- 生:交流答案 师:同学们看这道题怎样做?())()5(b n a m ++(多媒体展示)他和我们以前所学的有何不同? 生:现在是多项式乘多项式 师:那多项式乘多项式如何去计算呢?这节课我们一起来探究吧! 二、 学习目标(多媒体) 师:看到这个课题你想学习哪些知识呢? 生:交流 师:(多媒体呈现) 1、探究并了解多项式与多项式相乘的法则 2、熟练的运用法则进行运算 三、探求新知 问题助学一: 文文帮爸爸把原长为m 米,宽为b 米的菜地加长了n 米,拓宽了a 米,聪明的你能迅速表示出这块菜地现在的总面积吗? 你还能用更多的方法表示吗? (学生活动)小组内展评作品,推选出最优秀的同学的作品给全班学生展示。

数据结构经典算法试题

1.假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。【北京大学1998 三、1 (5分)】 LinkedList Union(LinkedList la,lb) { pa=la->next; pb=lb->next; la->next=null; while(pa!=null && pb!=null) ∥当两链表均不为空时作 if(pa->data<=pb->data) { r=pa->next; pa->next=la->next; ∥将pa结点链于结果表中,同时逆置。 la->next=pa; pa=r; } else {r=pb->next; pb->next=la->next; ∥将pb结点链于结果表中,同时逆置。 la->next=pb; pb=r; } while(pa!=null) ∥将la表的剩余部分链入结果表,并逆置。 {r=pa->next; pa->next=la->next; la->next=pa; pa=r; } while(pb!=null) {r=pb->next; pb->next=la->next; la->next=pb; pb=r; } }

1)设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。【南京理工大学1997 四、3(15分)】 LinkedList Union(LinkedList ha, hb)∥ha和hb是两个无头结点的数据域值递增有序的单链 {LinkedList 表,本算法将hb中并不出现在ha中的数据合并到ha中,合并中不能破坏hb链表。 la; la=(LinkedList)malloc(sizeof(LNode)); la->next=ha; pa=ha; pb=hb; pre=la; while(pa&&pb) if(pa->datadata)∥处理ha中数据 {pre->next=pa;pre=pa;pa=pa->next;} else if(pa->data>pb->data)∥处理hb中数据。 {r=(LinkedList)malloc(sizeof(LNode)); r->data=pb->data; pre->next=r; pre=r; pb=pb->next;} Else∥处理pa- >data=pb->data; {pre->next=pa; pre=pa; pa=pa->next;∥两结点数据相等时,只将ha的数据链入。 pb=pb->next; } if(pa!=null)pre->next=pa;∥将两链表中剩余部分链入结果链表。 else pre->next=pb; free(la); }

多项式与多项式相乘习题

多项式与多项式相乘习题 一、选择题 1.计算(2a-3b)(2a+3b)的正确结果是( ) A.4a2+9b2B.4a2-9b2C.4a2+12ab+9b2D.4a2-12ab+9b2 2.若(x+a)(x+b)=x2-kx+ab,则k的值为( ) A.a+b B.-a-b C.a-b D.b-a 3.计算(2x-3y)(4x2+6xy+9y2)的正确结果是( ) A.(2x-3y)2B.(2x+3y)2C.8x3-27y3D.8x3+27y3 4.(x2-px+3)(x-q)的乘积中不含x2项,则( ) A.p=q B.p=±q C.p=-q D.无法确定 5.若0<x<1,那么代数式(1-x)(2+x)的值是( ) A.一定为正B.一定为负C.一定为非负数D.不能确定6.计算(a2+2)(a4-2a2+4)+(a2-2)(a4+2a2+4)的正确结果是( ) A.2(a2+2) B.2(a2-2) C.2a3D.2a6 7.方程(x+4)(x-5)=x2-20的解是( ) A.x=0 B.x=-4 C.x=5 D.x=40 8.若2x2+5x+1=a(x+1)2+b(x+1)+c,那么a,b,c应为( ) A.a=2,b=-2,c=-1 B.a=2,b=2,c=-1 C.a=2,b=1,c=-2 D.a=2,b=-1,c=2 9.若6x2-19x+15=(ax+b)(cx+b),则ac+bd等于( ) A.36 B.15 C.19 D.21 10.(x+1)(x-1)与(x4+x2+1)的积是( )

A.x6+1 B.x6+2x3+1 C.x6-1 D.x6-2x3+1 二、填空题 1.(3x-1)(4x+5)=__________. 2.(-4x-y)(-5x+2y)=__________. 3.(x+3)(x+4)-(x-1)(x-2)=__________. 4.(y-1)(y-2)(y-3)=__________. 5.(x3+3x2+4x-1)(x2-2x+3)的展开式中,x4的系数是__________. 6.若(x+a)(x+2)=x2-5x+b,则a=__________,b=__________. 7.若a2+a+1=2,则(5-a)(6+a)=__________. 8.当k=__________时,多项式x-1与2-kx的乘积不含一次项. 9.若(x2+ax+8)(x2-3x+b)的乘积中不含x2和x3项,则a=_______,b=_______. 10.如果三角形的底边为(3a+2b),高为(9a2-6ab+4b2),则面积=__________. 三、解答题 1、计算下列各式 (1)(2x+3y)(3x-2y) (2)(x+2)(x+3)-(x+6)(x-1) (3)(3x2+2x+1)(2x2+3x-1) (4)(3x+2y)(2x+3y)-(x-3y)(3x+4y) 2、求(a+b)2-(a-b)2-4ab的值,其中a=2002,b=2001. 3、2(2x-1)(2x+1)-5x(-x+3y)+4x(-4x2-5 2 y),其中x=-1,y=2. 4、解方程组

数据结构-多项式相乘

多项式相乘 ?问题描述 此程序解决的是一元多项式相乘的问题。定义两个一元多项式,然后进行两个一元多项式的相乘。最后得到一个结果,并按升幂输出最终的多项式。 ?设计思路 定义一个结构体,里面包含一元多项式的符号、系数、指数。对多项式进 行输入时,先输入多项式的项数,然后从第一项的系数开始输入,然后输入第一项的指数,直至第一项输入完毕。然后开始输入第二项,输入第二项的方法与输入第一项的方法相同。在进行相乘时,用第二项的每个元素去乘第一项的每个元素。最终合并同类项的时候,把后面指数项加到与前面有共同指数的项的上面,然后删除该项。 ?数据结构设计 将多项式因子的符号、系数、指数封装成一个结构为顺序表类型 ?功能函数设计 void sort(LinkYinzi& Head)排序函数,采用冒泡排序对多项式进行排序 void PrintList(const LinkYinzi Head)输出多项式函数 void Creat_List(LinkYinzi& Head, int num)创建多项式函数 void DelList(LinkYinzi& Head, int n)删除多项式中某一项函数 void multip(const LinkYinzi Head1, const LinkYinzi Head2)多项式相乘函数 void menu_elect( LinkYinzi Head1, LinkYinzi Head2)功能选择函数 ?程序代码 #include using namespace std; typedef struct Yinzi{ char sign; float coef;//系数 int expn;//指数 Yinzi* next; }Yinzi,*LinkYinzi; void sort(LinkYinzi& Head){ LinkYinzi Q;//采用冒泡排序对多项式进行排序

《多项式与多项式相乘》同步练习题

第2课时 多项式与多项式相乘 一、选择题(每小题2分,共20分) 1.1.化简2)2()2(a a a --?-的结果是( ) A .0 B .22a C .26a - D .24a - 2.下列计算中,正确的是( ) A .ab b a 532=+ B .33a a a =? C .a a a =-56 D .222)(b a ab =- 3.若)5)((-+x k x 的积中不含有x 的一次项,则k 的值是( ) A .0 B .5 C .-5 D .-5或5 4.下列各式中,从左到右的变形是因式分解的是( ) A .a a a a +=+2)1( B .b a b a b a b a b a -+-+=-+-))((22 B .)4)(4(422y x y x y x -+=- D .))((222a bc a bc c b a -+=+- 5.如图,在矩形ABCD 中,横向阴影部分是矩形,另一阴影部分是平行四边行.依照图中标注的数据,计算图中空白部分的面积为( A .2c ac ab bc ++- B .2c ac bc ab +-- C .ac bc ab a -++2 D .ab a bc b -+-22 6.三个连续奇数,中间一个是k ,则这三个数之积是( A .k k 43- B .k k 883- C .k k -34 D .k k 283- 7.如果7)(2=+b a ,3)(2=-b a ,那么ab 的值是( ) A .2 B .-8 C .1 D .-1 8.如果多项式224y kxy x ++能写成两数和的平方,那么k 的值为( ) A .2 B .±2 C .4 D .±4 9.已知3181=a ,4127=b ,619=c ,则a 、b 、c 的大小关系是( ) A .a >b >c B .a >c >b C .a <b <c D .b >c >a 10.多项式251244522+++-x y xy x 的最小值为( ) A .4 B .5 C .16 D .25 二、填空题(每小题2分,共20分) 11.已知23-=a ,则6a = . 12.计算:3222)()3(xy y x -?-= . 13.计算:)13 12)(3(22+--y x y xy = . 14.计算:)32)(23(+-x x = . 15.计算:22)2()2(+-x x = . 16.+24x ( 2)32(9)-=+x . 17.分解因式:23123xy x -= .

《多项式乘以多项式》教案.pdf

教案 【教学目标】: 知识与技能:理解并掌握多项式乘以多项式的法则. 过程与方法:经历探索多项式与多项式相乘的过程,通过导图,理解多项与多项式的结果,能够按多项式乘法步骤进行简单的多项式乘法的运算,达到熟练进行多项式的乘法运算的目的. 情感与态度:培养数学感知,体验数学在实际应用中的价值,树立良好的学习态度. 【教学重点】:多项式乘以多项式法则的形成过程以及理解和应用 【教学难点】:多项式乘以多项式法则正确使用 【教学关键】:多项式的乘法应先转化为单项式与多项式相乘进行运算,进一步再转化为单项式的乘法,紧紧扣住这一线索. 【教具】:多媒体课件 【教学过程】: 一、情境导入 (一)回顾旧知识。 1.教师引导学生复习单项式乘以多项式运算法则.并通过练习加以巩固:(1)(- 2a)(2a 2 - 3a + 1) (2) ab ( ab2 - 2ab) (二)问题探索 式子p(a+b)=pa+pb中的p,可以是单项式,也可以是多项式。如果p=m+n,那么p(a+b)就成了(m+n)(a+b),这就是今天我们所要讲的多项式与多项式相乘的问题。(由此引出课题。) 二、探索法则与应用。 问题:某地区在退耕还林期间,有一块原长m米、宽a米的长方形林区增长了n 米,加宽了b米。请你表示这块林区现在的面积。 问题:(1)如何表示扩大后的林区的面积? (2)用不同的方法表示出来后的等式为什么是相等的呢? (学生分组讨论,相互交流得出答案。) 学生得到了两种不同的表示方法,一个是(m+n)(a+n)平方米;另一个是(ma+mb+na+nb)米平方,以上的两个结果都是正确的。问:你从计算中发现了什么? 由于(m+n)(a+b)和(ma+mb+na+nb)表示同一个量, 故有(m+n)(a+b)=ma+mb+na+nb 问:你会计算这个式子吗?你是怎样计算的? 学生讨论得:由繁化简,把m+n看作一个整体,使之转化为单项式乘以多项式,即:[(m+n)(a+b)=(m+n)a+(m+n)b=ma+mb+na+nb。] 设计意图:这里重要的是学生能理解运算法则及其探索过程,体会分配律可以将多项式与多项式相乘转化为单项多与多项式相乘。渗透整体思想和转化思想。引导:观察这一结果的每一项与原来两个多项式各项之间的关系,能不能由原来的多项式各项之间相乘直接得到?如果能得到,又是怎样相乘得到的?(教师示

多项式与多项式相乘经典练习题

【基础知识】多项式与多项式的乘法法则 多项式与多项式相乘,先用一个多项式的每一项与另一个多项式的每一项相乘,再把所得的积相加. 【题型1】多项式乘多项式 计算 (1)(2x -5y)(3x -y) (2)(x +5)(2x -7) (3)(4x +2y)(2x -7y) (4)(2x -y)(5x +2y-1) (5) ))((22y xy x y x ++- (4)(2x -y+2)(5x +2y-1) 【变式训练】 1.下列计算正确的是( ) A.473)4)(132-+=-+x x x x ( B.222)(b a b a +=+ C.22))(b a b a b a +=-+( D.2 2232)2)(2(y xy x y x y x --=-+ 2.若(x +2)(x -1)=x 2+mx +n ,则m +n = . 3.我校操场原来的长是2x 米,宽比长少10米,现在把操场的长与宽都增加了5米,则整个操场面积增加了 平方米. 4.计算 (1)(m +1)(2m -1) (2)(2a -3b)(3a +2b) (3)(3m -2n)(-m -n)

(4)(ab-b)(5ab+2b) (5)(a2b-b2)(5ab2+2b) (6)(-7x2-8y2)(-x2+3y2) (7)(y+2)2 (8) (x+2y)2 (9) (3x-2y)2 (10)(x+1)(x2-x+1) (11)(2x+y)(x2-xy+y) (12)(2xy+y)(x2-xy+y2) (13)(2a+3b)(3a+ab-2b) (14)(a-3b)(3ab+a2-2b2) (15)(5xy+2x-1)(xy+2) (16)(x3-2)(x3+3)-(x2)3+x2.x (17)(3x-2y)(y-3x)-(2x-y)(3x+y) 5.先化简,再求值(x-5)(x+2)-(x+1)(x-2),其中x=-4.

数据结构经典七种排序方法

算法名称:选择排序 算法定义:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。算法类型:不稳定排序 算法时间复杂度:O(n2)--[n的平方] 最少移动次数:0 最多移动次数:3(n-1) 算法适用场景:这个算法时间复杂度偏高,一般不选择使用。 算法代码: void select_sort(int *x, int n) { int i, j, min, t; for (i=0; i

算法定义:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 算法类型:稳定排序 算法时间复杂度:O(n2)--[n的平方] 算法适用场景:这个算法时间复杂度偏高,一般不选择使用。 算法代码: void insert_sort(int *x, int n) { int i, j, t; for (i=1; i =0 && t <*(x+j); j--) /*注意:j=i-1,j--,这里就是下标为i的数,在它前面有序列中找插入位置。*/ { *(x+j+1) = *(x+j); /*如果满足条件就往后挪。最坏的情况就是t 比下标为0的数都小,它要放在最前面,j==-1,退出循环*/ } *(x+j+1) = t; /*找到下标为i的数的放置位置*/ } } ======================================================================= ======================================================================= 算法名称:冒泡排序 算法定义:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

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