国家二级C++机试(选择题)模拟试卷197
选择题
1.有如下程序:
#include
using namespace std;
class Base
{
private:
void funl()const{cout<<“funl”;}
protected:
void fun2()const{cout<<“fun2”;}
public:
void fun3()const{cout<<“fun3”;}
};
class Derived:pmtected Base
{
public:
void fun4()cormt{cout<<“fun4”;}
};
int main()
{
Derived obi;
obj.funl();//①
obj.fun2();//②
obj.fun3();//③
obj.fun4();//④
return 0;
}
其中有语法错误的语句是( )。(B)
A. ①②③④
B. ①②③
C. ②③④
D. ①④
解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。
2.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(B)
A. 编辑软件
B. 操作系统
C. 教务管理系统
D. 浏览器
解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助管理人员控制开发进程和项目管理的工具软件。
3.已知函数fun的原型为
int fun(int,int,int);
下列重载函数原型中错误的是( )。(D)
A. char fun(int,int);
B. double fun(int,int,double);
C. int fun(int,char*);
D. float fun(int,int,int);
解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。
4.关于this指针的说法不正确的是( )。(D)
A. 不能在程序中修改this指针
B. this指针可以给其他指针赋值,但不能修改this指针
C. 静态成员函数中没有this指针
D. this指针可以被赋值
解析:this指针不能在程序中修改,不能被幅值;静态成员没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。
5.有如下程序:
#include
using namespace std;
class A{
public:
A(int i=0):r1(i){}
void print(){cout<<’E’<<r1<<’-’;}
void print()const{cout<<’C’<<r1*r1<<’-’;}
void print(int x){cout<<’p’<<r1*r1*r1<<’-’;}
private:
int r1;
};
int main(){
A a1;
const A a2(4);
a1.print(2);
a2.print();
return 0;
}
运行时的输出结果是( )。(D)
A. P8-E4
B. P8-C16-
C. P0-E4-
D. P0-C16-
解析:在主函数中创建a1对象时,调用类A的默认构造函数,其数据成员r1的值等于0。当执行a1.print(2)语句时,调用带参数的print成员函数,所以输出结果为p0-,对象a2为常成员,所以其成员变量r1的值等于4,因为常对象只能调用常成员函数,所以当执行语句a2.print()语句时,输出结果为C14-。
6.有如下程序:
#include
using namespace std;
class Name{
char name[20];
public:
Name(){
strcpy(name,\\(D)
A. 0
B. 1
C. 2
D. 3
解析:类Name有两个构造函数,在默认构造函数中,给字符数组。Flame赋窄值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,Flame[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出j个“?”符号。
7.下列字符串中不能作为C++标识符使用的是( )。(D)
A. WHILE
B. user
C. _lvar
D. 9stars
解析:在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。
8.下列符号中不属于C++关键字的是( )。(D)
A. friend
B. namespace
C. continue
D. byte
解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字:namespace是定义或使用名字空间时用到的关键字;continue是终止本次循环直接开始下一次循环所用到的关键字:byte是字节的意思,它不是C++语言中的关键字。
9.下列说法中错误的是( )。(B)
A. 公有继承时基类中的public成员在派生类中仍是public的
B. 公有继承时基类中的private成员在派生类中是public的
C. 私有继承时基类中的public成员在派生类中是private的
D. 保护继承时基类中的public成员在派生类中
本文档预览:3600字符,共7260字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载