一元多项式
一元多项式的次数

一元多项式的次数一元多项式的次数,听起来是不是有点让人头大?别急,放轻松,我们一点点来,绝对不会让你迷糊的。
理解这个东西,比你想象的简单多了。
咱们先从最简单的开始,所谓“一元多项式”,说白了就是一个只包含一个字母(也就是变量)的多项式。
啥意思呢?比如 (3x^2 + 2x + 1) 这种式子,x 就是变量,系数就是那些数字,3、2、1嘛,x 的不同次方就是这些项的“权重”。
而“一元”呢,就是说只有一个字母,也就是变量。
这个没什么难度吧?那“次数”又是什么呢?嘿,答案其实就藏在这些变量的次方数里。
就是看 x(或者那个字母)上标最大的数字。
就比如 (3x^2 + 2x + 1) 这个式子,x 的最大次数是 2(因为最大的是 (x^2) 这项)。
所以说,这个多项式的次数就是 2。
简单明了吧?你可能会想,咦,那如果是 (5x^3 + 2x^2 + 1),这个怎么办?嘿嘿,不用担心,看 x 上面最大的幂次,答案就是 3。
你看,是不是轻松多了?不过,说实话,你可能会想,“我为什么要知道次数?我生活中根本没碰到这些东西。
”哈哈,这个问题好,真是有点现实的味道。
其实次数的概念不仅仅是在数学题目里玩弄,它能帮助你更好地理解多项式的行为。
就像你走路时,你肯定知道走得快慢(速度),而次数就类似于你走得快慢的那个“步伐”——次数越高,步伐越大,走得也就越复杂。
看似简单的多项式,背后却藏着“步伐”的奥秘呢。
有些朋友可能会问,次数跟多项式的“难度”有没有关系?简单来说,次数越高,方程的形态也就越复杂。
比如你碰到一个三次方程 (x^3 4x^2 + 3x 5 = 0),你就知道它肯定比线性方程(就是那个一元一次方程 (x + 1 = 0))复杂得多。
你需要用更多的数学技巧来解决它,而不是直接拿个答案就能搞定。
次数大的多项式,求解起来,一般需要更复杂的步骤,像因式分解、求根公式这些手段,就比较适用。
别看一开始觉得没啥,越往后,次数大了就越需要“武器”了。
一元多项式 环的扩张定理

一元多项式环的扩张定理一元多项式环的扩张定理是数学中的一个定理,它描述了如何通过添加一个新的元素,使原本的一元多项式环扩张成为一个更大的环。
该定理是代数学中重要的工具,被广泛应用于代数几何学、数论、代数编码理论等领域。
一元多项式环指的是所有次数小于等于n的多项式组成的集合,其中n为一个正整数并且不含变量x的任意幂。
具体来说,一个一元多项式环可以表示为P<sub>n</sub>[x],其中P<sub>n</sub>是一个包含n个元素的多项式环。
该环的加法和乘法定义如下:- 加法:f(x) + g(x) = h(x),其中h(x)是次数小于等于n的多项式,且h(x)的系数为f(x)和g(x)对应项的系数之和。
- 乘法:f(x) × g(x) = h(x),其中h(x)是次数小于等于2n的多项式。
现在假设我们向P<sub>n</sub>[x]中添加一个新的元素a,那么我们得到的新集合可以表示为P<sub>n</sub>[x, a]。
这个新集合上的加法和乘法也分别可以这样定义:然而,我们希望确保新集合P<sub>n</sub>[x, a]是一个环,也就是说,集合中的元素满足环的基本性质,包括结合律、交换律、分配律等等。
在这种情况下,一元多项式环的扩张定理告诉我们,如果a是一个代数元,也就是说,a满足某个多项式方程f(a) = 0(其中f(x)是P<sub>n</sub>[x]中的一个多项式),那么P<sub>n</sub>[x, a]就是一个环。
具体来说,这个定理包含如下两个步骤:定理1:如果a是一个代数元,那么存在一个次数小于等于n的多项式f(x)使得f(a) = 0。
证明:假设f(a) ≠ 0,那么我们可以将f(a)表示为一个关于a的分式p(a)/q(a),其中p(x)和q(x)是P<sub>n</sub>[x]中的多项式,且q(a) ≠ 0。
一元多项式的求和运算

一元多项式的求和运算一元多项式的求和运算是代数学中的重要概念,它涉及到多项式的基本运算和代数方程的求解。
在本文中,我们将全面介绍一元多项式的求和运算,并提供一些指导意义。
一元多项式是由若干项组成的,每一项包含一个常数乘以一个变量的幂。
例如,多项式f(x) = 3x^2 + 2x + 1就是一个一元多项式,其中包含了三个项:3x^2、2x和1。
求和运算即将多项式中的所有项相加,得到一个结果。
求和运算过程中,首先需要将多项式按照指数从高到低排列。
这样做的目的是方便相同指数的项合并,从而简化求和的过程。
例如,对于多项式f(x) = 3x^2 + 2x + 1,按照指数从高到低排列后,变为f(x) = 3x^2 + 2x + 1。
接下来,我们将相同指数的项合并。
在本例中,没有相同指数的项,所以不需要合并。
最后,将所有项相加,得到最终结果。
除了将相同指数的项合并外,求和运算还可以应用于求解代数方程。
当我们需要找到使得多项式等于零的变量值时,可以通过求和运算得到该变量的解。
例如,若要求解方程f(x) = 0,可以将多项式按照指数从高到低排列,并将所有项相加。
若最终结果为0,即表明该变量的某个值满足方程。
一元多项式的求和运算在数学和科学中有广泛的应用。
在代数学中,基于求和运算的多项式求解技术被广泛应用于方程求解、多项式插值和最小二乘拟合等问题中。
在物理学中,一元多项式的求和运算用于描述物理量之间的关系,如牛顿运动定律、电路分析和热力学方程等。
在经济学和金融学中,多项式的求和运算用于建模和预测经济变量,如股票价格、利率和通货膨胀率等。
通过一元多项式的求和运算,我们可以更好地理解多项式的性质和特点,从而应用于实际问题的求解。
同时,求和运算也是培养数学思维和解决实际问题的重要途径之一。
通过合理运用多项式的求和运算,我们可以化繁为简,解决复杂的问题。
综上所述,一元多项式的求和运算是代数学中的重要概念,它不仅包括多项式的基本运算和代数方程的求解,还具有广泛的应用。
一元多项式的定义和运算讲解

令f (x)是F [x]的一个次数大于零的多项式,并且
此处
定理 2.4.2
例 在有理数域上分解多项式 为不可约因式的乘积.容易看出
(2)
一次因式x + 1自然在有理数域上不可约.我们证明, 二次因式 也在有理数域上不可约.不然的话, 将能写成有理数域上两个次数小于2的因式 的乘积,因此将能写成
这个定义的条件也可以用另一种形式来叙述
若多项式 有一个非平凡因式 而 ,那么 与 的次数显然都小于 的次数.反之,若 能写成两个这样的多项式的乘积,那么 有非平凡因式.因此我们可以说:
这里
多项式的减法
2.1.5 多项式加法和乘法的运算规则
(1)加法交换律:
(2)加法结合律:
(3)乘法交换律:
(4)乘法结合律:
(5)乘法对加法的分配律:
注意:
要把一个多项式按“降幂”书写
当
时,
叫做多项式的首项.
2.1.6 多项式的运算性质
定理
是数环R上两个多项式,并且
定义 2
设 是多项式 与 的一个公因式.若是 能被 与 的每一个公因式整除,那么 叫做 与 的一个最大公因式.
定义 1
的任意两个多项式 与 一定有最大公因式.除一个零次因式外, 与 的最大公因式是唯一确定的,这就是说,若 是 与 的一个最大公因式,那么数域F的任何一个不为零的数 c与 的乘积 ,而且当 与 不全为零多项式时,只有这样的乘积是 与 的最大公因式.
由此得出,
是
与
的最大公因式,而
定理 2.3.3
的两个多项式 与 互素的充分且必要条 件是:在 中可以求得多项式 与 ,使
一元多项式求导

一元多项式求导一元多项式求导是高中数学中涉及到的一项重要知识点,下面将从概念、方法、例题等方面进行详细的介绍。
一、概念一元多项式即只含有一个变量的多项式,其形式一般为:$f(x) = a_nx^n+a_{n-1}x^{n-1}+...+a_1x^1+a_0$,其中$x$为变量,$a_n$至$a_0$为常数项。
求导即对多项式中的变量进行求导操作。
二、方法多项式的求导有两种方法:一种是利用求导基本公式进行计算;另一种是通过差商的方法来推导求导公式。
下面将分别进行介绍。
1. 利用求导基本公式进行计算利用求导基本公式,对多项式进行求导可以得到:$\dfrac{d}{dx}f(x) = na_nx^{n-1}+(n-1)a_{n-1}x^{n-2}+...+a_1$。
其中$\dfrac{d}{dx}$表示对$x$进行求导操作,$n$表示多项式中$x$的最高次幂。
例如,对于$f(x) = 3x^3+2x^2+x+1$,我们可以利用求导基本公式进行计算:$\dfrac{d}{dx}f(x) = 9x^2+4x+1$2. 差商方法利用差商的方法,可以得到多项式求导公式如下:$\dfrac{d}{dx}(x^n) = nx^{n-1}$。
利用这一公式,可以对任意一元多项式进行求导。
例如,对于$f(x) = 3x^3+2x^2+x+1$,我们可以利用差商方法进行计算:$\dfrac{d}{dx}f(x) =3\dfrac{d}{dx}(x^3)+2\dfrac{d}{dx}(x^2)+\dfrac{d}{dx}(x)+\dfrac{d }{dx}(1)$$\quad\quad\quad\quad\quad\,\,\,=9x^2+4x+1$三、例题下面列举一些多项式求导的例题,供同学们进行理解和练习。
例1:求函数$f(x) = x^4-3x^2+2$在$x=1$处的导数。
解:利用差商方法进行求导,得到:$\dfrac{d}{dx}f(x)\bigg|_{x=1} = 4(1)^3-2(3)(1) = -2$因此,函数$f(x)$在$x=1$处的导数为$-2$。
数据结构一元多项式的运算

数据结构一元多项式的运算正文:1. 引言本文档旨在介绍数据结构中一元多项式的运算方法。
一元多项式是指在一个变量上的多项式,其中每一项由一个系数和一个指数组成。
我们将会讨论一元多项式的表示、存储和基本运算,包括多项式的加法、减法、乘法和求导等操作。
2. 一元多项式的表示和存储2.1 一元多项式的定义一元多项式是指在一个变量x上的多项式,每一项由一个系数和一个指数组成,例如:2x^3 - 5x^2 + 3x + 1.其中,2、-5、3和1分别是系数,3、2、1和0分别是指数。
2.2 一元多项式的表示方法一元多项式可以使用数组、链表或其他数据结构来表示。
在本文中,我们选择使用数组来表示一元多项式。
数组的索引代表指数,数组的元素代表系数。
例如,多项式 2x^3 - 5x^2 + 3x + 1 可以表示为 [1, 3, -5, 2]。
2.3 一元多项式的存储结构为了表示一元多项式,我们可以使用一个数组来存储多项式的系数。
数组的长度应该比多项式的最高指数大1.数组的索引代表指数,数组的元素代表系数。
例如,数组 [1, 3, -5, 2] 表示的多项式 2x^3 - 5x^2 + 3x + 1 中,索引0对应指数为3的项,索引1对应指数为2的项,以此类推。
3. 一元多项式的基本运算3.1 一元多项式的加法一元多项式的加法是指将两个多项式相加,并合并同类项。
具体操作如下:- 将两个多项式的系数相加,并将结果存储在一个新的多项式中。
- 遍历新的多项式,将相邻的相同指数的项合并。
3.2 一元多项式的减法一元多项式的减法是指将一个多项式减去另一个多项式,并合并同类项。
具体操作如下:- 将两个多项式的系数相减,并将结果存储在一个新的多项式中。
- 遍历新的多项式,将相邻的相同指数的项合并。
3.3 一元多项式的乘法一元多项式的乘法是指将两个多项式相乘,并合并同类项。
具体操作如下:- 遍历一个多项式的每一项,与另一个多项式的每一项相乘。
一元多项式的乘法与加法运算
一元多项式的乘法与加法运算
一元多项式的乘法与加法运算
一、乘法运算
1、定义
一元多项式的乘法运算是指在一元多项文的基础上的乘法运算,其中
乘数和被乘数均为一元多项式。
2、运算规则
(1)同序项相乘:两个一元多项式的相同次方项,按照乘法规则运算,系数相乘,指数相加。
(2)求和:将相乘之后的项按次方合起来,系数相加,指数相同。
二、加法运算
1、定义
一元多项式的加法运算是指在一元多项式的基础上的加法运算,其中
加数和被加数均为一元多项式。
2、运算规则
(1)同序项相加:两个一元多项式的相同次方项,按照加法规则运算,系数相加,指数相同。
(2)求和:将相加之后的项按次方合起来,系数相加,指数相同。
以上就是一元多项式的乘法与加法运算,总之,一元多项式的乘法与加法运算主要有以下几点:
(1)乘法运算:同序项相乘,求和,系数相乘,指数相加。
(2)加法运算:同序项相加,求和,系数相加,指数相同。
一元多项式的定义和运算
多 问题:5、除了定义之外,判断一个集合是数环 有没有其他简单的方法? 项 式
定理1.1.1:设S是一个非空数集,S是数环的充 高 等 要条件是S中任两个数的差和积仍在S中。 代 二、数域 数 定义2: 设F是一个含有不等零的数的数集,如果F
中任两个数的和、差、积、商(除数不为0)仍在F中, 则称F是一个数域。 定义 2: 设F是一个数环,如果 ① F内含有一个非 1 零数; ② 对 a, b F , 且 b 0 ,则 a b F 则称F是一个数域。 多 例如:有理数集Q,实数集R,复数集C都是数域,
高 等 代 数
第一章 多项式
学时:28学时 教学方法和手段
由于多项式与整数在许多方面有相似之处,因此在建 立多项式分解理论时要注意与整数理论作对比。
基本内容和教学目的
1
本章主要讨论一元多项式的概念和运算,建立多项式 因式分解理论,并讨论与之有密切关系的求根问题。 这是中学有关知识的加深和扩充。
有理数、实数、复数。再比如讨论多项式的因式分 解、方程的根的情况,都跟数的范围有关。
例如
1
x 2 在有理数范围内不能分解,在实数范围内
2
多 项 式
就可以分解。 x2 1 0 在实数范围内没有根,在复数范围内就 有根。等等。
我们目前学习的解析几何,数学分析都是在实数 高 等 范围内来讨论问题的。但在高等代数中,通常不做 代 这样的限制。 在代数中,我们主要考虑一个集合中元素的加减 数
多 项 式
本章的重点和难点
重点:一元多项式的因式分解理论. 难点:最大公因式的概念,多项式的整除,互素和不可约多 项式等概念之间的联系与区别.
§1.1 数环和数域 高 研究数学问题常常需要明确规定所考虑的数的 等 代 范围,学习数学也是如此。 数 比如,先学习自然数,然后整数,再正有理数、
§1.2_一元多项式的定义和运算
an 0, bm 0 anbm 0
f x g x 0
f x g x nm
多项式乘法没有零因子。
第一章 多项式
推论1:若 f x g x 0 f x 0或g x 0 证:若f=0或g=0,则必有fg=0。 反之,若 f x 0, g x 0
第一章
多项式
定义2: f x , g x 是两个多项式, f x g x
最高次项, 亦称为首项。 除系数为0的项之外,同次项的系数都相等。 多项式的表法唯一。 方程 a0 a1x an xn 0 是一个条件等式而不是 两个多项式相等。 定义3: 设 f x a0 a1x
k 相乘积的和作为 x 的系数。得:
k f x g x aib j x k 0 i j k 2 3 2 例1.2.3:设 f x 3x 4x 5, g x x 2x x 1
nm
f x g x x 5x 5x 6
f x n.
第一章 多项式
an xn , an 0,
非负整数n称为 f x 的次数,记为:
2 f x 3 x 2x 1, f x 2, 例1.2.2:
f x 3, f x 0
零次多项式:次数为0的多项式即非零常数。 零多项式:系数全为0的多项式。对零多项式不 定义次数,因此,在谈论多项式的次数时,意味着这 个多项式不是零多项式。 首一多项式:首项系数为1的多项式。 二、多项式的运算 定义4: 设 f x a0 a1x
第一章 多项式
5.1 一元多项式和运算
第五章多项式5.1 一元多项式和运算定义 设F 为数域, x 为一个符号(也称不定元). 形如称为F 上关于x 的一元多项式, 一元多项式常简称多项式, 为第 i 次项,同时称 f (x ) 为n 次多项式, 记为deg f (x )=n . 当 时, 称 为 其中称 110(),nn n n f x a x a x a −−=+++ 1100[]{|,,0,1,...,}nn n n i F x a x a xa n a F i n −−≥=+++∈∈= 10,,,,n n a a a F −∈ ii a x i a 则称 f (x )为首一多项式.F 上一元多项式全体记为 0a 其中n 是非负整数,称为第i 次项系数, 称为常数项, 首项,为首项系数, 0n a ≠nn a x n a 若a n =1,注1 常数项多项式:零多项式: 零次多项式: 注200(),f x a a F =∈ .()0f x =.00()0,f x a a F =≠∈..−∞()0deg ()0.f x f x ≠≥0()0deg ()=0.f xa f x =≠定义零多项式次数为的充分必要条件是 的充分必要条件是例1ii x x x x x 23221(1)0;(2);(3);(4);(5)1π∞=+−∑定义 设是数域F 上的多项式, 如果则称f (x )与g (x )相等, 记为1110()n n n n f x a x a x a x a −−=++++ 1110()mm m m g x b x b xb x b −−=++++ i im n a b i n (0,1,2,,), ===且()().f xg x =定义 设 f (x ), g (x )是F 上多项式, 适当增加几个系数为零的项, 可设 定义加法:则 f (x ) + g (x )是 F 上多项式.1110()nn n n f x a x a x a x a −−=++++ 1110()n n n n g x b x b x b x b −−=++++ 1111100()()()()()()nn n n n n f x g x a b x a b xa b x a b −−−+=++++++++多项式的加法满足性质(1) 结合律: (f (x )+g (x ))+h (x )=f (x )+(g (x )+h (x )); (2) 交换律: f (x )+g (x )=g (x )+f (x ); (3) 存在零元: f (x )+0=f (x );对于定义 (4) 存在负元: f (x )+(–f (x ))=0.0(),nii i f x a x ==∑0()().nii i f x a x =−=−∑定义 设 定义数乘:则 cf (x ) 是 F 上多项式.1110()[],,nn n n f x a x a x a x a F x c F −−=++++∈∈ 1110()nn n n cf x ca x ca xca x ca −−=++++多项式的数乘满足性质:对任意的有 (5) c (f (x )+g (x ))=cf (x )+cg (x ); (6) (c +d )f (x )=cf (x )+df (x ); (7) (cd )f (x )=c (df (x )); (8) 1f (x )=f (x ).(),()[],,,f x g x F x c d F ∈∈定理 F [x ]关于多项式的加法与数乘构成 F 上的线性空间.注 F [x ]是无限维线性空间. 对任意正整数n ,线性无关.证明 若 由多项式相等定义, 即得 故线性无关. 21,,,,nx x x 20120,nna a x a x a x ++++= 0120.na a a a ===== 21,,,,nx x x定义 设定义乘法:其中则 f (x )g (x ) 是 F 上多项式.11101110()[],()[],n n n n m m m m f x a x a x a x a F x g x b x b x b x b F x −−−−=++++∈=++++∈ 1110()()m nm n m n m n f x g x c xc xc x c ++−++−=++++ 0110(0,1,,)k i j k k k i j kc a b a b a b a b k m n −+===+++=+∑多项式的乘法满足性质:对任意的 有 (9) (f (x )g (x )) h (x )=f (x )(g (x ) h (x )); (10) f (x )g (x )=g (x )f (x );(11) (f (x )+g (x ))h (x )=f (x ) h (x )+g (x ) h (x ); (12) c (f (x )g (x ))=(cf (x ))g (x )= f (x )(cg (x )). 定理 F [x ]关于多项式的加法,数乘和乘法构成 F 上带单位元1的交换代数.(),(),()[],f x g x h x F x c F ∈∈引理设f(x), g(x)是F上多项式, c是F上非零数, 则(1) deg (f(x) + g(x)) ≤ max{deg f(x), deg g(x)};(2)deg (cf(x))= deg f(x);(3) deg(f(x)g(x)) = deg f(x) + deg g(x).证明 (3) 若f(x), g(x)有一个为零多项式, 则命题成立.若f(x), g(x)均为非零多项式, 首项分别为a n x n, b m x m, 则f(x) g(x)首项为a n b m x n+m , a n b m ≠0,因此deg f(x) g(x) = n+m.命题若f(x), g(x)是F上非零多项式, 则f(x)g(x)也是F 上非零多项式.证明因为f(x), g(x)是F上非零多项式, 因此它们的次数均大于等于0,又 deg (f(x)g(x)) = deg f(x) +deg g(x) ≥ 0,故 f(x)g(x) 是非零多项式.推论若f(x)是非零多项式, 且f(x) g(x) = f(x) h(x), 则g(x) = h(x).证明因为f(x) g(x) = f(x) h(x),所以f(x)(g(x) - h(x))=0.又因为f(x)≠0,则由命题有g(x) - h(x)=0,所以g(x) = h(x).例2 设 且f 2(x )+ g 2(x )=0, 则f (x )=g (x )=0.证明 反证法 假设f (x )≠0 或者g (x )≠0, 记 不妨设n ≥m , 则f 2(x )+ g 2(x )首项系数为, 故f 2(x )+ g 2(x )的首项系数不为0, 矛盾. 注 例2结论对复数域不成立. 如 110110(),0,(),0,nn n n n i m m m m m i f x a x a xa a a g xb x b xb b b −−−−=+++≠∈=+++≠∈222+,n nna b a 或221+=0,10,0.i i ≠≠但(),()[],f x g x x ∈ n na b ,∈小结(1) 一元多项式的定义、运算(2) 次数、首项(3) 主要证明方法: 次数, 首项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构课程设计》报告学号:姓名:年级:专业:指导老师:完成日期:年月目录一、一元多项式的加法运算1、实验内容2、需求分析...........................................3、概要设计...........................................4、详细设计...........................................5、调试分析...........................................6、测试结果...........................................7、用户使用说明.......................................一元多项式计算一、实验内容一元多项式的计算的相加二、需求分析建立一元多项式并按照降幂输出多项式,将一元多项式输入并存储在链表中,能够完成两个多项式的加减运算并输出结果1.输入的形式和输入值的范围:(1)功能选择的输入必须是整型,输入值只能是1|2|3|4中的任一个数;(2)系数的输入必须是实型,当输入非实型数据时,例如输入字母a时,程序会提示输入系数不合法,重新输入;(2)输入的指数必须为整型,当输入的指数为浮点型如2.1时,程序会提示输入指数不合法,重新输入。
(3)多项式项数的输入形式必须是整形,输入值的范围大于等于0。
2.输出的形式:(1)功能选择的输出形式,例:输入“1”,则输出“请输入多项式a的项数:”;(2)多项式a的输出形式,例:已输入a的系数和指数分别为1,则输出“多项式a=x”;(3)多相式b的输出形式,例:已输入b的系数和指数分别为-1,则输出“多项式b=-x”;(4)a+b的输出形式为,例:已输入a=x,b=x,则输出“a+b=2x”。
3.程序所能达到的功能:(1)实现一元多项式的输入;(2)实现一元多项式的输出;(3)计算两个一元多项式的和并输出结果。
4.测试数据:包括正确的输入及输出的结果和含有错误的输入及输出结果。
(1)正确的输入及输出例:在功能选择时输入“1”,则显示“请输入多项式”多项式a的项数为:2例:第一项系数和指数为:系数:2,指数:1,第二项系数和指数为:系数:1,指数:1;多项式b的项数为:2例:第一项系数和指数为:系数:3,指数:2,第二项系数和指数为:系数:4,指数:3;在功能选择时输入“2”,则显示“请输出多项式”则输出显示多项式a为:3x;多项式b为:4x^3+3x^2;在功能选择时输入“3”,则显示“建立多项式a+b:”多项式a+b结果为:4x^3+3x^2+3x;(2)错误的输入及输出例:当系数为:a,指数:1,程序会提示输入系数不合法,重新输入;当系数为:2,指数:2.3,程序会提示输入指数不合法,重新输入;三.概要设计1..抽象数据类型一元多项式的定义:typedef struct Polynomial{ } //链表的存储结构Polyn CreatePolyn(Polyn head,int m){} //链表,结点的创建void Insert(Polyn p,Polyn h){} //结点的直接顺序插入void PrintPolyn(Polyn P){} //多项式的输出int compare(Polyn a,Polyn b){} //两个多项式指数之间的大小比较Polyn AddPolyn(Polyn pa,Polyn pb){} //多项式相加函数int main(){} //主函数2.主程序流程图3.模块间调用Polyn CreatePolyn(Polyn head,int m){先创建结点,后调用Insert()函数进行直接顺序插入}Polyn AddPolyn(Polyn pa,Polyn pb);{调用compare()函数,比较指数关系,返回特定数据,在该函数用switch语句进行条件选择。
}main(){调用CreatePolyn()函数进行多项式创建,调用PrintPolyn()将已输入的多项式显示出,调用AddPolyn()函数将实现将两个多项式进行相加;}四.详细设计1、头文件#include<stdio.h>#include<malloc.h>2、定义结构体typedef struct Polynomial{//用带表头结点的有序链表表示多项式float coef; //系数int expn; //指数struct Polynomial *next; //指针域,指向直接后继}*Polyn,Polynomial; //Polyn为结点指针类型3、创建一个一元多项式并调用插入函数(边创建结点边按降幂顺序插入)Polyn CreatePolyn(Polyn head,int m){ //建立一个头指针为head、项数为m的一元多项式p=head=(Polyn)malloc(sizeof(struct Polynomial));//为头结点开辟空间head->next=NULL;for(i=0;i<m;i++){p=(Polyn)malloc(sizeof(struct Polynomial));//建立新结点以接收数据printf("请输入第%d项的系数与指数:\n",i+1);printf("系数: ");while(!scanf("%f",&p->coef)){若输入的系数不是浮点型,则输出“输入数据不合法,请重新输入系数”;}输入指数;while((int)exp!=exp){输入的指数不是整型输出“输入数据不合法,请重新输入指数”;}p->expn=exp; //将输入值赋给指数Insert(p,head); 调用Insert函数插入结点}return head;//返回头结点}4、用直接插入排序法进行降幂排序void Insert(Polyn p,Polyn h)//插入{if(p->coef==0) free(p);如果系数为0的话释放结点else{如果系数不为0的话,查找结点插入位置,q1和q2均非空(){ ;^^}while(q2&&p->expn<q2->expn){如果插入的指数小,则插入到结点q2的后面;}if(q2&&p->expn==q2->expn){如果指数相同相项合并并释放p结点;if(!q2->coef){若q2的系数不存在,则头指针直接指向下一个结点;系数为0的话释放结点;}}else{若插入的指数大,则在q1与q2之间插入新的结点;}}}5、输出一元多项式void PrintPolyn(Polyn P){ //输出一元多项式Polyn q=P->next;int flag=1;//项数计数器if(!q) {若多项式为空,输出0}while (q){if(系数大于0且不是第一项){输出字符+;}if(系数非1或-1){输出%g;if(指数为1) {输出字符串‘X’;}else if(指数不为1) {输出X^ %d;}}else{if(系数为1){if(指数为0) {输出字符‘1’ ;}else if(指数为1) {输出字符‘X’; }else {指数不为1输出"X^%d";}}if(系数为-1){if(指数为0) {输出字符‘1’ ;}else if(指数为1){输出字符‘-X’; }else {指数不为1输出"-X^%d";}}}q=q->next; //指向下一个结点flag++;项数加1}printf("\n");}6、多项式a和多项式b的比较int compare(Polyn a,Polyn b){if(多项式a和多项式b都非空){if(多项式a的指数大于b的指数)return 1; 返回1else if(多项式b不为空或者a的指数小于b的指数)return -1; 返回-1else return 0; 若a的指数等于b的指数则返回0}else if(a多项式已空,但b多项式非空) return -1;else return 1;若b多项式已空,但a多项式非空则返回1}7、多项式a与多项式b相加(求解并建立多项式a+b,返回其头指针)Polyn AddPolyn(Polyn pa,Polyn pb){Polyn qa=pa->next;Polyn qb=pb->next;Polyn headc,hc,qc;hc=(Polyn)malloc(sizeof(struct Polynomial));hc->next=NULL;headc=hc;while(qa||qb){qc=(Polyn)malloc(sizeof(struct Polynomial));switch(compare(qa,qb)){ //调用compare函数比较指数case 1: //多项式pb中当前结点的指数值小或者多项式b为空,多项式a为非空{qc->coef=qa->coef;qc->expn=qa->expn;qa=qa->next;break;}case 0: //两者的指数值相等{qc->coef=qa->coef+qb->coef;qc->expn=qa->expn;qa=qa->next;qb=qb->next;break;}case -1: //多项式pa中当前结点的指数值小,或者多项式a为空,多项式b 为非空{qc->coef=qb->coef;qc->expn=qb->expn;qb=qb->next;break;}}if(指数不为0){qc->next=hc->next;hc->next=qc;hc=qc;}else{free(qc);}//当相加系数为0时,释放该结点}return headc; //返回头指针}8、主函数int main(){ 设置菜单功能,1.输入多项式2.输出多项式3.建立多项式a+b4.退出通过选择相应序号,调用相应函数实现菜单上相应功能调用CreatePolyn()函数进行多项式创建,调用PrintPolyn()将已输入的多项式显示出,调用AddPolyn()函数将实现将两个多项式进行相加;}五。
调试分析在进行链表结点创建时,将输入的指数和系数放入结点中,程序显示0错误,要判断系数输入的是否为实型,如果输入字母则报错,该程序直接将系数定义为字符型xs,将输入的字符xs与字母比较,最后将xs-48赋给系数,但是程序中系数的输入无法执行出来,在结果显示中直接跳入指数的输入。