首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: cr
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: cr
admin
2009-02-15
56
问题
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。
【说明】
以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有:
createList():创建按指数降序链接的多项式链表,以表示多项式:
reverseList():将多项式链表的表元链接顺序颠倒:
multiplyList(ListL1,ListL2)计算多项式L1和多项式L2的乘积多项式。
【C++程序】
#include <iostream.h>
class List;
class Item {
friend class List;
private:
double quot ;
int exp ;
Item *next;
Public:
Item(double_quot,int_exp)
{ (1) ;}
};
class List{
private:
Item *list;
Public:
List(){
list=NULL:
}
void reverseList();
void multiplyList(List L1,List L2);
void createList();
};
void List::createList()
{ Item *p,*U,*pre;
int exp;
double quot;
list = NULL;
while (1) {
cout << "输入多项式中的一项(系数、指数) :" << endl;
cin >> quot >> exp:
if ( exp<0 )
break ; //指数小于零,结束输入
if ( quot=0 )
continue;
p = list;
while ( (2) ) { //查找插入点
pre = p;
p = p->next;
}
if ( p != NULL && exp = p->exp ) {
p->quot += quot;
continue ;
}
u =(3);
if (p == list)
list = u;
else
pre->next = u;
u ->next = p;
}
}
void List::reverseList()
{ Item *p, *u;
if ( list==NULL )
return;
p = list ->next;
list -> next = NULL;
while ( p != NULL) {
u = p -> next;
p ->next = list;
list = p;
p = u;
}
}
void List::multiplyList ( List L1, List L2 )
{ Item *pL1,*pL2,*u;
int k, maxExp;
double quot;
maxExp =(4):
L2.reverseList();
list=NULL;
for ( k = maxExp;k >= 0;k-- ){
pL1 = L1.list;
while ( pL1 != NULL && pL1 -> exp > k )
pL1 = pL1 ->next;
pL2 = L2.1ist;
while (pL2 NULL &&(5))
pL2 = pL2 -> next;
quot = 0.0;
while (pL1 != NULL && pL2 != NULL){
if(pL1->exp+pL2->exp==k) {
(6)
pL1 = pL1 -> next;
pL2 = pL2 -> next;
} else if ( pL1 -> exp + pL2 -> exp > k )
pL1 = pL1 -> next;
else
pL2 = pL2 -> next;
}
if ( quot !=0.0 ) {
u = new item( quot, k );
u -> next = list;
list = u;
}
}
reverseList ();
L2. reverseList ():
}
void main()
{ List L1,L2,L;
cout << "创建第一个多项式链表\n";
L1.createList();
cout << "创建第二个多项式链表\n";
L2.createList();
L.multiplyList (L1,L2);
}
选项
答案
(1)quot=_quot; exp=exp; next=NULL; (2)p!=NULL && exp <p--> exp (3)newItem (quot, exp) (4)L1.list--> exp + L2.1ist--> exp (5)pL1--> exp + pL2--> exp <k (6)quot+=pL1-->quot*pL2-->quot
解析
阅读本试题C++程序可知,程序主要由类Item和类List组成。类Item定义多项式中的项,它定义了 3个私有数据成员,即系数quot、指数exp和指向多项式的下一项的指针next。该类中定义了一个带有2个参数的构造函数,其作用是创建系数为_quot,指数为_exp的项(即创建类Item的一个对象),因此(1)空缺处所填写的语句是“quot=_quot;exp=_exp;next=NULL;”。
类List定义了多项式的操作,数据成员list是多项式链表的链头指针。类的成员函数createList()的功能是:创建按照指数降序顺序链接的多项式。其创建的方法是:不断将新的项插入到链表中的合适位置上。若链表中存在一项p,其指数大于待插入项的指数,则待插入项应该是p的前驱。该成员函数在链表上遍历,直至找到满足上述条件的项。若链表中不存在“指数大于待插入项的指数”的项,那么待插入项将成为新的链尾。因此(2)空缺处所填写的循环判断条件是“p!=NULL&&exp<p->exp”。(3)空缺处应根据读入的指数和系数创建要插入的项,即(3)空缺处所填写的内容是“new ltem(quot,exp)”。若链表中存在指数与待插入项的指数相等,则应合并同类项。
成员函数multiplyList(L1,L2)用于计算多项式L1和L2的乘积。首先计算L1和L2的乘积多项式的最高幂次,即多项式L1和L2的最高次项的指数之和。由于多项式L1和L2的各项是按照指数降序排列的,两个多项式的第一项分别是最高次幂项,这两项的指数之和就是乘积多项式的最高次幂,因此(4)空缺处所填写的内容是“L1.1ist->exp+L2.list->exp”。
为了实现系数的乘积求和计算,当多项式L1从幂次高至幂次低逐一考虑各项的系数时,多项式L2应从幂次低至幂次高的顺序考虑各项的系数,以便将两个多项式中所有幂次和为众的两项系数相乘后累加。由于应用程序中所使用的数据结构是单链表,因此成员函数先将其中多项式L2的链接顺序颠倒,待计算完成后再将多项式L2的链接顺序颠倒,即恢复多项式L2原来的链接顺序。乘积多项式从最高次(L1与L2的幂次和)幂系数至0次幂系数的顺序逐一计算。
为求A次幂这一项的系数,对于L1的考查顺序是从最高次幂项至最低次幂项,而L2的考查顺序是从最低幂次项至最高次项。首先跳过多项式L1中高于k次幂的项,设低于k次幂的项最高次幂是j次幂,对于多项式L2,跳过低于k-j次幂的项,因此(5)空缺处所填写的内容是“pL1->exp+pL2->exp<k”。
考虑多项式L1和L2剩余各项的循环,若两多项式的当前项幂次和为k,则累计它们系数的乘积,并分别准备考虑下一项,因此(6)空缺处所填写的语句是“quot+=pL1->quot*pL2->quot”:若两个多项式的当前项幂次和大于A,则应该考虑幂次和更小的项,即应准备考虑多项式L1的下一项:若两个多项式的当前项幂次和小于A,则应该考虑幂次和更大的项,准备考虑多项式L2的下一项;若所有幂次和为A的项的系数乘积之和不等于0,则应在乘积多项式中有这一项,生成这一项的新节点(让指针u指向该节点),并将它插在乘积多项式的末尾。
转载请注明原文地址:https://jikaoti.com/ti/YvW7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel中,若A1单元格的值为5,在B1单元格输入函数“=A1-10”,则B1单元格的值为______。
对某地区家庭人数的抽样调查统计结果如下表:根据此表,该地区每个家庭的平均人数大致为(28)。
某商场的部门和商品两个实体之间的关系如下图所示。假设每个部门负责销售若干种商品,每种商品只能由一个部门负责销售,那么部门和商品之间存在着(14)的联系。
________________不会是信息系统的功能。
在Excel2003中,A1到E6单元格的值如下图所示,若在A7单元格中输入计算众数的函数“=MODE(A1:E6)”,按回车键后,则.A7单元格显示的值为(47)。
为在Exce1的A1单元格中生成一个60到100之间的随机数,则应在A1单元格中输入______
在Word编辑状态下,有些英文单词或汉字下面会自动加上红色或绿色的波浪型细下划线。以下叙述中,“波浪型细下划线(44)”是错误的。
数据录入工作有两个指标:录入速度和错误率。一般而言,数据录入员在录入大批数据时,录入速度会(65),错误率会(66)。66
(1)是固化在主板ROM内的程序,为计算机提供最底层、最直接的硬件访问和控制。
随机试题
A.控涎丹B.大陷胸汤C.舟车丸D.十枣汤泻热逐水的方剂是
下列费用中,属于取得国有土地使用权应支付的费用有()。
基金销售机构收取增值服务费的.应当符合的要求不包括?()
某公司只生产电脑、手机两种产品,且均使用“HAIER”这一品牌销售,这种品牌战略属于()。
“厄尔尼诺”的显著特征是指()。
在()时期,我国就会制陶器。
四方连续纹样
对同一目标接连进行3次独立重复射击,假设至少命中目标一次的概率为7/8,则单次射击命中目标的概率p=______.
有以下程序main(){charp[]={’a’,’b’,’c},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));}程序运行后输
下列叙述中正确的是()。
最新回复
(
0
)