2017计算机二级考试《C++》上机考试题及答案
通过试题练习,能够帮助考生们更好掌握所学知识点,以下是本站小编搜索整理的一份计算机二级考试《C++》上机考试题及答案,供参考练习,预祝考生们考出自己理想的成绩!想了解更多相关信息请持续关注我们应届毕业生考试网!
一、程序改错题
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,使其输出结果为:
n=0
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
//********error*******。
classTC()
{
public:
//********error********
void~TC(){}
TC(intn)
{
cout<<’n’<<’=’< };
//********error********
}
voidmain()
{
TCtest(0);
return;
}
二、简单应用题
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str,charch)的定义,本函数采用二分法,在已按字母次序从小到大排序的字符数组str中,查找字符ch,若ch在数组中,函数返回字符ch在数组中的下标,否则返回1。
二分法查找的思想是初始查找区间的下界为0,上界为len-1,查找区间的中部后,k=(下界+上界)/2;若list[k]等于ch,查找成功;若list[k]>ch,则新的查找区间的下界不变,上界改为k-1;否则新的查找区间的下界改为k+1,上界不变。在新区间内继续用二分法查找。
注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include(iostream.h>
intfun(char*str,charch)
{
}
voidmain()
{
charstr[]={’a’,’b’,’C’,’d’,’e’,’f’,’9’,’h’,’i,’
j’,’k’);
charch;
cout<<"请输入一个字符:"< cin>>ch;
cout<<"输入字符的位置是:"< return;
}
三、综合应用题
使用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:
tl;
t1=t2:
}
}
voidmain()
{
inti=0;
TChead:
do
{
intdata;
cout<<"请输入一个数字:"< cin>>data;
if(data==O)break;
Insert(&head,data);
}while(1);
printf(&head);
Delete(&head):
return;
}
}
试题答案与解析一、程序改错题
(1)应改为“classTC”。
(2)应改为“~TC(){}”。
(3)应改为“};”。
【解析】本题第1处的“classTC()”为类的定义,根据C++中类的'定义格式,类名后面是没有括号的,所以第1处应为“classTC”。第2处的“void~TC(){}”是析构函数,C++中析构函数的格式中是没有函数类型说明的,所以修改为“~TC(){}”。根据C++中类的定义,第3个标识下类结束的“}”缺少分号,即修改为“};”。
二、简单应用题
intlow=0;//初始查找区间的下界
inthigh;
intk;
for(high=0;str[high]!=0;high++)//求字符串长度
while(10w {
k=(low+high)/2;
if(str[k]==ch)
returnk;
elseif(str[k]>ch)
high=k-l:
elselow=k+1:
}
if(str[low]==ch)
returnlow;
return-1:
【解析】本题首先初始查找区间的下界为0,然后求得字符串长度len,上界为len-1,查找区间的中部后,k=(下界+上界)/2;若list[k]等于ch,查找成功。若list[k]>ch,则新的查找区间的下界不变,上界改为k-1;否则新的查找区间的下界改为k+1,上界不变。
三、综合应用题
(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年3月计算机二级考试报名时间
北京师范大学2017年3月计算机二级考试报名时间定于2016年12月5日-30日,以下是具体内容,欢迎阅读!北京师范大学珠海分校2017年3月计算机二级考试报名定于2016年12月5日-30日进行,报名时请考生认真核对报名信息,信息一经签名确认将不做更改。具体报名公告如下:2017年...
-
2023年9月全国计算机二级C语言模拟题
2023年9月的计算机二级考试目前正在进行着考试,今天已经是考试的最后一天了,各位考生们的考试状态如何呢?下面是小编精心整理的2023年9月全国计算机二级C语言模拟题,欢迎阅读与收藏。9月全国计算机二级C语言模拟题1一、单项选择题1、运算符___________的优先级最高...
-
2017年3月计算机二级考试《VB》考试题及答案
1).为了使一个复选框被禁用(灰色显示),应把它的Value属性设置为()A.OB.1C.2e正确答案:C答案解析:复选框的Value属性可以设置为0、l或2。O表示没有选择该复选框,l表示选中该复选框,2表示该复选框被禁用(灰色显示)。2).一个教师可讲授多门课程,一门课程可由多个教师讲...
-
2009年3月全国计算机二级考试Access真题
一、选择题(每小题2分,共70分)1、下面叙述中正确的是A.栈是先进先出的线性表B.队列是先进后出的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构2、支持子程序调用的数据结构是A.栈B.树C.队列D.二叉树3、某二叉树有5个...