考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
全国  |             |          |          |          |          |         
  当前位置:计算机等级 > 二级考试 > C++语言程序设计 > C++模拟试题 > 文章内容
  

全国计算机二级考试C++考前押密试卷(3)

中华IT学院   【 】  [ 2017年8月25日 ]

  21.D。【解析】本题考鸯this指针的使用。类的每一个成员函数都有一个隐含的常量指针,印this指针。类的静态成员函数不能含有this指针.因为this指针是一个指向本对象的指针。

  22.A。【解析】本题考查C++流的溉念和I/0的格式化。tin是istream类的对象,即输入流对象。ifstream是输入文件流,类不能定义个输出流对象。getline函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以D选项中的语句序列后x中字符串应该是Happynewyear。

  23.C。【解析】本题中类TestClass为基类,TestClassl为TestClass的派生类。由main主函数入手,定义TestClassl类型的对象dl,参数值为y。TestClassl类继承TestClass,所以主函数中“TestClassldl(’y’);”语句首先调用“TestClassl(charc){colll<  24.D。【解析】虚基类说明格式为:Virtual<继承方式><基类名>其中,virtual是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即class<派生类名>:Virtual<继承方式><基类名>。

  25.C。【解析】本题考查类的构造函数和析构函数。首先,Samplesl(2,3);会调用含有两个参数的构造函数Sam-ple(inta,intb){x=a;y=b;),disp()函数输出成员变量x和y的值x=2,y=3;然后结束时调用析构函数。因为x和y值不等,故输出X!=Y。

  26.D。【解析】本题主要考查switch语句的使用,在第一个case处,因为满足条件,所以输出字符3。但这个分支没有break语句终止,所以会继续执行下面的分支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。

  27.A。【解析】静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题中变量n是静态数据成员,对象对其操作的结果具有叠加作用,main函数中先定义了Test的对象*P,然后又delereP,所以对静态数据n进行了两次操作,分别是"n+=2"和"n-=3",n的初始值是1,那么n最后的值变为0。main函数最后通过调用静态函数getNum得到n的值,并输出。

  28.A。【解析】本题考查虚基类的应用。虽然Derivedl和Derived2都是由共同的基类x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员x只存在一份副本,不论在类Derivedl中修改,还是在Derived2中修改,都是直接对这唯一副本进行操作。本题程序执行语句“Derivedobj;”时.就会先调虚基类Base的构造函数,使得X=0,然后执行类Derivedl的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。

  29.C。【解析】用一个指针变量p指向字符数组A,在while循环中,当不指向数组尾时,将小写字母转换为大写字母,然后将其输出。

  30.B。【解析】本题定义TestClass型常对象a,然后调用对象a中的成员函数print()。因为在C++中.如果一个对象被声明为常对象,则不能调用该对象中的非const型成员函数。所以,这里调用的是对象中的const型成员函数voidprint()const,输出为print2。

  31.A。【解析】本题考查含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  32.B。【解析】本题考查模板函数的应用,表达式int(1.1)和int(4.2)用于将1.1和4.2强制转换为整型。

  33.D。【解析】本题考查引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加1。但b的值并未改变。

  34.B。【解析】本题是两个循环语句和一个判断语句的嵌套。For循环的作用是在i等于10的时候跳出循环,故本题的答案为B。

  35.B。【解析】本题考查派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。格式为,派生类名(构造函数形参表)基类构造函数(形参表)。

  36.A。【解析】*a[]表示一个字符串数组,for循环的作用是输出字符串数组中每一个字符串的第一个字符。所以正确答案为选项A。

  37.D。【解析】数组和指针的关系非常密切,因为数组名称单独使用是表示数组的首地址。故可用的表示可能是a[i],p[i],*(P{i),同样&(a[i])表示地址,因此*(&a[i])等同于a[i]。本题答案为D。

  38.A。【解析】C++语言中,setfill的意思是在空格的地方填上setfill函数中的参数字符,setw的意思是设置整个输出字符串的字符个数,本题中用*来代替空格。

  39.D。【解析】本题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。

  40.C。【解析】由主函数main入手,首先x被赋值为3,a被赋值为4,然后调用fun函数,参数为4,所以在fun函数中的a=4。而主程序中的x作用域是由它定义开始到cout输出,在fun函数中无效。而在fun函数定义前的变量X作用域是整个程序,所以fun函数中的x值为5,这样C的值就为20。在主函数中的x+fun(a)中的x为靠近这条语句的x定义,即3,所以最后x的值为20+3=23。

分享到:
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved