我爱学习网 52xx.cn我爱学习网菜单按钮
  • 搜索
当前位置:首页 > 阅读 > 计算机等级考试

计算机二级

发布时间:2021-02-03 栏目:阅读 投稿:傲娇的奇异果

2018年3月计算机等级考试即将开始,小编在这里为考生们整理了2018年3月计算机二级考试C++上机试题及答案,希望能帮到大家,想了解更多资讯,请关注我爱学习网的及时更新哦。

2018年3月计算机二级考试C++上机试题及答案(4)

综合应用题

使用VC++6.0打开考生文件夹下的源程序文件3.cpp,阅读下列程序说明和代码,功能如下:

从屏幕输入数字,然后由大到小插入到指定的链中。当输入0时,表示输出的数据已经输入完成,把数据打印到屏幕,并释放内存。

其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。

(1)在父结点的Next中保存新插入的结点的指针,请在注释1后添加适当的语句

(2)把pNext的子结点赋给pNext本身,请在注释2后添加适当的语句

(3)判定P的子结点不为空,如果不为空,则打印P中的数据到屏幕,请在注释3后添加适当的语句

(4)用t1保存动态申请内存结点的链表头,请在注释4

添加适当的语句

注意:仅在函数指定位置添加语句,请勿改动主函数

main与其他函数中的任何内容。

试题程序:

#include

classTC

{

public:

TC(intdata=O)

{

this->data=data;

this->next=NULL;

}

intdata;

TC*next;

};

voidInsert(TC*P,intdata)

{

TC*temp=newTC(data);

TC*pParent=P:

TC*pNext=p-)next:

while(pNext)

{

if(data>pNext->data)

{

//********1********

temp->next=pNexti

return;

}

else

{

pParent=pNext;

//********2********

}

}

if(pNext==NULL)

{

pParent->next=temp;

return;

}

}

voidprintf(TC*p)

{

//********3********

while()

{

coutdata<<"";

P=P->next;

}

cout<}

voidDelete(TC*p)

{

//********4********

TC*t1=;

TC*t2;

while(t1!=NULL)

{

t2=t1->next:

deletetl;

t1=t2:

}

}

voidmain()

{

inti=0;

TChead:

do

{

intdata;

cout<<"请输入一个数字:">data;

if(data==O)break;

Insert(&head,data);

}while(1);

printf(&head);

Delete(&head):

return;

}

}

综合应用题

(1)应添加“pParenl->next=telnp;”。

(2)应添加“pNext=pNext->next;”。

(3)将“while()”补充完整为“while(P->next!=NULL)”。

(4)将“TC*t1=;”补充完整为“TC*t1=P->next;”。

【解析】本题第1处要求“在父结点的Next中保存新插入的结点的指针”。对于指针的操作,pParent->next为pParent的子结点,在父结点的Next中保存新插入的结点的指针,即“pParent->next=temp;”。第2处要求“把pNext的子结点赋给pNext本身”。pNext->next为pNext的子结点,把pNext的子结点赋给pNext本身,即“pNext=pNext->next;”。注释3下是判定P的子结点不为空。P的子结点是p->next。程序中的“while()”缺乏P的子结点不为空的判断条件,所以修改为“while(P->next!=NULL)”。第4处要求“用t1保存动态申请内存结点的链表头”。P为链表,P->next为链表头。程序中的语句“TC*t1=;”中t1没有被赋值,所以修改为“TC*t1=P->next;”。

我爱学习网栏目推荐

相关推荐:

计算机等级考试报名

计算机三级

2017年9月计算机二级考试冲刺习题及答案(二)

计算机一级

计算机二级