首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: cr
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: cr
admin
2009-02-15
79
问题
阅读以下应用说明、图和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://kaotiyun.com/show/OEjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
下面描述正确的是(20)。
下列选项中,不属于信息处理基本要求的是(22)。
对用户来说,信息系统的(14)反映了系统的功能。
在PowerPoint中,使用快捷键(55)可以使选定的文本添加下划线。
新建一个Word文档,编辑结束后,执行“文件”菜单中的“保存”命令,则______。
一条内存不常见的容量是(1)。
在调查某地区各类用户所喜欢的电视栏目时,信息处理技术员小王制作了用户类(U)与电视栏目(V)关系图。下面的示意图描述了五类用户(从上到下U1~U5)与四个电视栏目(从上到下V1~V4)之间的关系:如果某类用户大多喜欢某个电视栏目,则在它们之间画一条连线。从
数据分析工具的(13)________________特性是指它能导入和导出各种常见格式的数据文件或分析结果。
在Excel2010的A1单元格中输入函数“=ABS(ROUND(-1.478,2))”,按回车键后,A1单元格中的值为________________。
PowerPoint可以通过插入(55)来完成统计、计算等功能。
随机试题
如何检查倒车雷达蜂鸣器?
从本质上讲,资产评估是一种【】活动。
A.种植体植入时机械稳定性不适当B.食物嵌塞C.义齿牙合关系不正常D.不良习惯E.牙菌斑早期种植失败的原因是
治吐血三要法:宜行血不宜止血;宜补肝不宜伐肝;宜降气不宜降火,出于()
下列说法中,正确的是()。
针对作弊屡禁不止的现象,某学院某班承诺,只要全班同学都在承诺书上签字,那么,如果全班有一人作弊,全班同学的考试成绩都以不及格计。校方接受并实施了该班的这一承诺。结果班上还是有人作弊,但班长的考试成绩是优秀。从上述判断逻辑得出的结论是()。
给定资料1.2017年12月28日至29日,中央农村工作会议在北京举行。会议深入贯彻党的十九大精神、习近平新时代中国特色社会主义思想,全面分析“三农”工作面临的形势和任务,研究实施乡村振兴战略的重要政策,部署2018年和今后一个时期的农业农村工作。
下列犯罪属于事后帮助犯的有()
A、Hedidn’tunderstandthelecture.B、Hewantstoborrowhernotesnextweek.C、Heneedshelpwithamakeupexam,D、Hewassick
Attentiontodetailissomethingeveryonecanandshoulddoespeciallyina【B1】______jobmarket.BobCrossley,ahumanresourc
最新回复
(
0
)