首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: cr
阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: cr
admin
2009-02-15
84
问题
阅读以下应用说明、图和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://www.kaotiyun.com/show/OEjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
信息系统中,防止非法使用者盗取、破坏信息的安全措施要求:进不来、拿不走、改不了、看不懂。以下(62)技术不属于安全措施。
若要查询成绩为70-80分之间(包括70分,不包括80分)的学生的信息,以下查询准则设置正确的是()。
某商场的部门和商品两个实体之间的关系如下图所示。假设每个部门负责销售若干种商品,每种商品只能由一个部门负责销售,那么部门和商品之间存在着(14)的联系。
文件abc.docx______。
在PowerPoint2007中,若想在一屏内观看多张幻灯片的大致效果,可采用的方法是(52)________________。
在Excel2010的A1单元格中输入函数“=ABS(ROUND(-1.478,2))”,按回车键后,A1单元格中的值为________________。
下列快捷功能按钮中,可以在画好的图形内填充颜色的是(49)。
西部某省考试机构工作人员统计了去年下半年三个地区四种资格的报考人数,将统计表抄录如下(其中有一个数据抄错了): 信息处理技术员小王很快就找出了错误的数据,并进行了纠正。错误的数据是(32),该数据应纠正为(33)。33.
在Windows7中,若删除桌面上某个应用程序的快捷方式图标,则(31)。
计算机使用一段时间后发现,系统启动时间变长,系统响应迟钝,应用程序运行缓慢,为此,需要进行系统优化。系统优化工作不包括___________。
随机试题
在欧洲启蒙运动的影响下,体育逐渐完成了从“活动”向“课程”的转变,下列哪一位教育家的思想推动了这一转变?()
A、继续实施原有计划B、重新制定计划C、修订原有计划D、排除原有计划E、终止原有计划当预期社区护理目标部分实现时,社区护士应继续实施、修订或
治疗视神经脊髓炎应用甲基泼尼松的正确方案是
下列说法正确的是()。
活动是幼儿发展的基础和源泉,幼儿身心发展的特点决定了他们必须通过活动去接触各种事物和现象,并且不同形式内容的活动,在幼儿发展中的作用也是不一样的,这就要求幼儿教育应当坚持()原则。
本题为必选题,请在以下两道试题中任选一题作答。如果两题都答,只按第1题的成绩计入总分。试根据有关教育心理学理论解释张明的人格发展特点以及这一理论对于学校解决与张明相似学生的启示意义。张明现在是高中三年级的学生,马上就要参加高考了,班主任老师早就让同学
下列物质,属于投放虚假危险物质罪的“危险物质”的是()
“法律不但由国家制定或认可,而且由国家保证实施”,这句话说明了法律具有
Everyoneisgettingold,butyoulook_________thanever.
ItsuddenlyoccurredtomethatthiswasanactIcouldneverdo.
最新回复
(
0
)