1、C+程序设计真题 2011年 10月及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:20,分数:20.00)1.C+中注释“/*”的有效范围是( )A从“/*”开始到行尾 B从“/*”开始后不终止C从“/*”开始到“/”为止 D从“/*”开始到“*/”为止(分数:1.00)A.B.C.D.2.如想使用 std命名空间,正确的程序语句是( )Ausing std; Bnamespace std;Cusing namespace; Dusing namespace std;(分数:1.00)A.B.C.D.3.下列选项中不是 C+关键字的是( )Abool BintC
2、float Dvar(分数:1.00)A.B.C.D.4.用于标识长整型常量的前缀或后缀是( )A无前后缀 B后缀 L或 lC前缀零 D前缀 0x(分数:1.00)A.B.C.D.5.对于 new类型名size描述正确的是( )A申请可以存储 size个字节的空间B申请可以存储 1个该数据类型的空间C申请可以存储 size个该数据类型对象的空间D申请可以存储 1个字节的空间(分数:1.00)A.B.C.D.6.使用下列哪个流格式控制符可以设置转换基数为十六进制( )Adec BoctChex Dendl(分数:1.00)A.B.C.D.7.构造函数用于( )A定义对象 B初始化对象C清除对象
3、D普通计算(分数:1.00)A.B.C.D.8.设函数 void swap(int,int)将交换两形参数值,如有两整型变量 int a=10;int b=15;则执行swap(a,b);之后,a,b 值分别为( )A15,10 B15,15C10,15 D10,10(分数:1.00)A.B.C.D.9.设函数 void subone(int)将形参值减 1,如有整形变量 int b=10;则执行 subone(b)后,b 的值为( )A9 B10C11 D未知(分数:1.00)A.B.C.D.10.C+中函数返回值类型不可以是( )A引用 B指针C结构 D数组(分数:1.00)A.B.C.D
4、.11.声明函数 int Func(int a=0,int b=3,int c=4)相当于声明了几个函数形式( )A1 B2C3 D4(分数:1.00)A.B.C.D.12.C+中专门定义一个仅在模板中使用的参数类型的关键字是( )Aconst BinlineCshort Dtypename(分数:1.00)A.B.C.D.13.对于类中的成员,使用 private修饰,表明该成员的访问权限是( )A公有的 B私有的C保护的 D不可见的(分数:1.00)A.B.C.D.14.使用 new创建的对象,对其生命周期描述正确的是( )A由系统决定 B由用户控制C全局生命周期 D永久存在(分数:1.0
5、0)A.B.C.D.15.析构函数被调用的时间点是( )A对象被创建时 B对象被销毁时C不会被调用 D主函数被调用时(分数:1.00)A.B.C.D.16.对象的构造函数调用顺序取决于( )A对象成员在初始化列表中给出的顺序B对象成员在类中声明的顺序C对象成员与在初始化列表中顺序和类中声明顺序均有关D随机顺序(分数:1.00)A.B.C.D.17.下列对静态成员函数描述正确的是( )A静态成员函数中可使用 1个 this指针B静态成员函数中不能使用 this指针C静态成员函数中可使用多个 this指针D静态成员函数中只可使用 1个 that指针(分数:1.00)A.B.C.D.18.友元的声明
6、可出现在( )A类的私有部分 B类的公有部分C类的保护部分 D类的任何部分(分数:1.00)A.B.C.D.19.在下列派生中,子类和父类间是 isa关系的是( )Aprivate BprotectedCpublic Dpublish(分数:1.00)A.B.C.D.20.面向对象不仅进行功能抽象,还要进行( )A动态抽象 B消息抽象C数据抽象 D算法抽象(分数:1.00)A.B.C.D.二、填空题(总题数:20,分数:20.00)21.在调用函数 f11的过程中,又调用了函数发 f12,这种调用称为 3 调用。(分数:1.00)填空项 1:_22.C+中重载“+”运算符的函数名是 1。(分数
7、:1.00)填空项 1:_23.设为类 A添加一个纯虚函数 Fun,其第一个参数类型为整型,第二个参数类型为字符型,函数返回值类型为整型。实现此操作的语句是 1。(分数:1.00)填空项 1:_24.C+程序的头文件和源程序文件扩展名分别为 1 和.cpp。(分数:1.00)填空项 1:_25.在 C+中,利用向量类模板定义一个具有 20个 int类型的向量 B,实现此操作的语句是: 1。(分数:1.00)填空项 1:_26.通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员这时就成了派生类的 1。(分数:1.00)填空项 1:_27.字符串类型的变量一般用 1 和
8、字符数组类型的变量表示。(分数:1.00)填空项 1:_28.在一个 C+程序中,每个变量都必须遵循 1 的原则。(分数:1.00)填空项 1:_29.在常成员函数里不能更新对象的数据成员,也不能调用该类中没用 1 关键字修饰的成员函数。(分数:1.00)填空项 1:_30.UML是一种可视化建模语言,主要用于面向对象的 1 和建模。(分数:1.00)填空项 1:_31.复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为 1 函数。(分数:1.00)填空项 1:_32.对于 C+类中的成员,若未使用访问权限关键字进行说明,默认的权限是 1。(分数:1.00)填空项 1:_33.对象的行为
9、是定义在对象属性上的一组 1 的集合。(分数:1.00)填空项 1:_34.设 int max(int,int)表示计算两个整数中的最大值,则执行语句“coutmax(max(2,3),max(7,8);”的输出结果是 1。(分数:1.00)填空项 1:_35.函数 fun的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类型,另一个参数是int类型引用,声明函数 fun的原型的语句为 1。(分数:1.00)填空项 1:_36.string类中用于交换两个字符串对象的值的成员函数为 1。(分数:1.00)填空项 1:_37.无论变量 x和 y是整型还是浮点类型,x*y 都表示这两个变
10、量的积,这是典型的 1 的例子。(分数:1.00)填空项 1:_38.执行下列代码int a=29,b=1001;coutasetw(6)bendl;程序输出结果是:_。(分数:1.00)填空项 1:_39.在 C+中,赋值表达式 y=x+的含义是 1。(分数:1.00)填空项 1:_40.设有如下定义:int x;若要将整型变量 y定义为变量 x的引用,则应使用的语句是 1。(分数:1.00)填空项 1:_三、改错题(总题数:5,分数:20.00)41.#includeiostream.hvoid main()float *p;p=new float5;for(i=0;i5;i+)cin*c
11、(p+i);cout*(p+i)endl;deletep;(分数:4.00)填空项 1:_42.#includeiostream.htemplateclass Tclass fprivate:T x,y;public:void f1(T a,T b)x=a;y=b;T max()return(xy)? x:y;void main()finta;a.f1(3.5,3.8);couta.max()endl;(分数:4.00)填空项 1:_43.#includeiostream.hclass testprivate:static int x;int y;public:void test1(int a
12、,int b)x=a;y=b;void main()test a;a.test1(2,3);(分数:4.00)填空项 1:_44.#includeiostream.hclass fprivate:float x,y;public:void f1(float a,float b)x=a;y=b;f()x=0;y=0;void move(float a,float b)x=x+a;y=y-b;void get()coutx yendl;void main()f *p,a;a.f1(1.6,3.8);p=&a;p.get();(分数:4.00)填空项 1:_45.#ineludeiostream.h
13、class pointint x;public:void init(int a)x=a;int getx()return x;void setx(int a)x=a;void main()point a;a.init(20,30);couta.getx()endl;(分数:4.00)填空项 1:_四、完成程序题(总题数:5,分数:20.00)46.完成下面类中成员函数的定义。class testprivate:int n1;float f1;public:test(int,float f);test(test&);test:test(_)n1=n;f1=f;test:test(test&t)n
14、1=t.n1;n=_;(分数:4.00)_47.在下面程序中的下划线处填上适当的语句,使程序的输出结果如下:11,7711,77源程序如下:#includeiostreamusing namespace std;class baseprivate:int x,y;public:void initxy(int a,int b)x=a;y=b;void show()_;void main()base a,b;a.show();b=a;b.show();(分数:4.00)_48.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=1,y=2x=30,y=40源程序如下:#includei
15、ostream.hclass Sampleint x,y;public:Sample()x=y=0;Sample(int i,int j)x=i;y=j;void copy(Sample& s);void setxy(int i,int j)x=i;y=j;void print()cout“x=“x“,y=“yendl;void Sample:copy(_)x=s.x;y=s.y;void func(_)s1.setxy(10,20);s2.setxy(30,40);void main()Sample p(1,2),q;q.copy(p);func(p,q);p.print();q.print
16、();(分数:4.00)_49.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。202122a0=20a1=21a2=22程序清单如下:#includeiostreamusing namespace std;class baseprivate:int x;public:void setx(int a)x=a;int getx()return x;void main()base a3,*p;a0.setx(20);a1.setx(21);a2.setx(22);for(P=a;pa+3;p+)_for(int i=0;i=2;i+)_(分数:4.00)_50.在下面程序中的下划线处填
17、上适当的程序,使程序的输出结果如下:x=2y=3源程序如下:#includeiostream.hclass Sampleint x,y;public:Sample()x=y=0;Sample(_)x=a;y=b;void disp()cout“x=“x“,y=“yendl;void main()Sample s(2,3),_p-disp();(分数:4.00)_五、程序分析题(总题数:2,分数:10.00)51.请给出下面程序的输出结果#includeiostreamusing namespace std;void fun()static int n=25;n-:cout“n=“nendl:v
18、oid main()for(int i=0;i=2;i+)fun();(分数:5.00)_52.请给出下面程序的输出结果#includeiostreamusing namespace std;class pointint num;public:point(int n)cout“Initializing“nendl;num=n;void main()point A(88);cout“Entering main“endl;(分数:5.00)_六、程序设计题(总题数:1,分数:10.00)53.给定两个字符串对象 S,P(P 的长度小于 S),实现一判断函数 find,检测 S是否完全包含 P(串
19、P是 S的子串),若包含则返回 P第一个字符在串 s中的起始地址,否则返回-1。#includeiostream.h#includestringclass strstring s,p;public:str(string& a,string& b)s=a;p=b;find();请写出函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)(分数:10.00)_C+程序设计真题 2011年 10月答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:20,分数:20.00)1.C+中注释“/*”的有效范围是( )A从“/*”开始到行尾 B从“/*”开始后不终止C从
20、“/*”开始到“/”为止 D从“/*”开始到“*/”为止(分数:1.00)A.B.C.D. 解析:解析 C+有两种注释方式:一种是沿用 C语言的从“/*”开始,到“*/”结束的注释方式;另一种是更灵活的注释方式“/”,注释的有效范围从“/”至本行结束。2.如想使用 std命名空间,正确的程序语句是( )Ausing std; Bnamespace std;Cusing namespace; Dusing namespace std;(分数:1.00)A.B.C.D. 解析:3.下列选项中不是 C+关键字的是( )Abool BintCfloat Dvar(分数:1.00)A.B.C.D. 解析
21、:4.用于标识长整型常量的前缀或后缀是( )A无前后缀 B后缀 L或 lC前缀零 D前缀 0x(分数:1.00)A.B. C.D.解析:解析 后缀 L或 l用于标识长整型常量,前缀零用于标识八进制常量,前缀 0x用于标识十六进制常量。5.对于 new类型名size描述正确的是( )A申请可以存储 size个字节的空间B申请可以存储 1个该数据类型的空间C申请可以存储 size个该数据类型对象的空间D申请可以存储 1个字节的空间(分数:1.00)A.B.C. D.解析:6.使用下列哪个流格式控制符可以设置转换基数为十六进制( )Adec BoctChex Dendl(分数:1.00)A.B.C.
22、 D.解析:解析 dec:设置转换基数为十进制;oct:设置转换基数为八进制;hex:设置转换基数为十六进制;endl:输出一个换行符并刷新流。7.构造函数用于( )A定义对象 B初始化对象C清除对象 D普通计算(分数:1.00)A.B. C.D.解析:8.设函数 void swap(int,int)将交换两形参数值,如有两整型变量 int a=10;int b=15;则执行swap(a,b);之后,a,b 值分别为( )A15,10 B15,15C10,15 D10,10(分数:1.00)A.B.C. D.解析:解析 函数 void swap(int,int)使用对象作为函数参数,即将实参对
23、象的值传递给形参对象,这种传递是单向的。形参拥有实参的备份,当在函数中改变形参的值时,改变的是这个备份中的值,不会影响原来实参的值。9.设函数 void subone(int)将形参值减 1,如有整形变量 int b=10;则执行 subone(b)后,b 的值为( )A9 B10C11 D未知(分数:1.00)A.B. C.D.解析:10.C+中函数返回值类型不可以是( )A引用 B指针C结构 D数组(分数:1.00)A.B.C.D. 解析:解析 C+函数的返回值类型可以是除数组和函数以外的任何类型。11.声明函数 int Func(int a=0,int b=3,int c=4)相当于声明
24、了几个函数形式( )A1 B2C3 D4(分数:1.00)A.B.C.D. 解析:12.C+中专门定义一个仅在模板中使用的参数类型的关键字是( )Aconst BinlineCshort Dtypename(分数:1.00)A.B.C.D. 解析:解析 C+专门定义一个仅仅用在模板中的关键字 typename,它的用途之一是代替 template参数列表中的关键字 class。13.对于类中的成员,使用 private修饰,表明该成员的访问权限是( )A公有的 B私有的C保护的 D不可见的(分数:1.00)A.B. C.D.解析:解析 使用 private修饰的类成员是私有的,使用 publi
25、c修饰的类成员是公有的,而使用protected修饰的类成员是保护的。14.使用 new创建的对象,对其生命周期描述正确的是( )A由系统决定 B由用户控制C全局生命周期 D永久存在(分数:1.00)A.B. C.D.解析:15.析构函数被调用的时间点是( )A对象被创建时 B对象被销毁时C不会被调用 D主函数被调用时(分数:1.00)A.B. C.D.解析:解析 析构函数在对象的生存期结束时被自动调用。16.对象的构造函数调用顺序取决于( )A对象成员在初始化列表中给出的顺序B对象成员在类中声明的顺序C对象成员与在初始化列表中顺序和类中声明顺序均有关D随机顺序(分数:1.00)A.B. C.
26、D.解析:解析 对象成员构造函数的调用顺序取决于这些对象成员在类中声明的顺序,与它们在成员初始化列表中给出的顺序无关。17.下列对静态成员函数描述正确的是( )A静态成员函数中可使用 1个 this指针B静态成员函数中不能使用 this指针C静态成员函数中可使用多个 this指针D静态成员函数中只可使用 1个 that指针(分数:1.00)A.B. C.D.解析:解析 静态成员函数没有 this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。18.友元的声明可出现在( )A类的私有部分 B类的公有部分C类的保护部分 D类的任何部分(分数:1.00)A.B.C.D
27、. 解析:19.在下列派生中,子类和父类间是 isa关系的是( )Aprivate BprotectedCpublic Dpublish(分数:1.00)A.B.C. D.解析:20.面向对象不仅进行功能抽象,还要进行( )A动态抽象 B消息抽象C数据抽象 D算法抽象(分数:1.00)A.B.C. D.解析:二、填空题(总题数:20,分数:20.00)21.在调用函数 f11的过程中,又调用了函数发 f12,这种调用称为 3 调用。(分数:1.00)填空项 1:_ (正确答案:直接递归(或递归))解析:22.C+中重载“+”运算符的函数名是 1。(分数:1.00)填空项 1:_ (正确答案:o
28、perator+)解析:23.设为类 A添加一个纯虚函数 Fun,其第一个参数类型为整型,第二个参数类型为字符型,函数返回值类型为整型。实现此操作的语句是 1。(分数:1.00)填空项 1:_ (正确答案:virtual int Fun(int,char)=0;)解析:24.C+程序的头文件和源程序文件扩展名分别为 1 和.cpp。(分数:1.00)填空项 1:_ (正确答案:.h)解析:25.在 C+中,利用向量类模板定义一个具有 20个 int类型的向量 B,实现此操作的语句是: 1。(分数:1.00)填空项 1:_ (正确答案:vectorintB(20))解析:26.通过私有派生,基类
29、的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员这时就成了派生类的 1。(分数:1.00)填空项 1:_ (正确答案:私有成员)解析:27.字符串类型的变量一般用 1 和字符数组类型的变量表示。(分数:1.00)填空项 1:_ (正确答案:字符指针)解析:28.在一个 C+程序中,每个变量都必须遵循 1 的原则。(分数:1.00)填空项 1:_ (正确答案:先定义后使用)解析:29.在常成员函数里不能更新对象的数据成员,也不能调用该类中没用 1 关键字修饰的成员函数。(分数:1.00)填空项 1:_ (正确答案:const)解析:30.UML是一种可视化建模语言,主要用于面向对象的
30、 1 和建模。(分数:1.00)填空项 1:_ (正确答案:分析)解析:31.复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为 1 函数。(分数:1.00)填空项 1:_ (正确答案:拷贝构造)解析:32.对于 C+类中的成员,若未使用访问权限关键字进行说明,默认的权限是 1。(分数:1.00)填空项 1:_ (正确答案:private(或私有))解析:33.对象的行为是定义在对象属性上的一组 1 的集合。(分数:1.00)填空项 1:_ (正确答案:操作)解析:34.设 int max(int,int)表示计算两个整数中的最大值,则执行语句“coutmax(max(2,3),max(
31、7,8);”的输出结果是 1。(分数:1.00)填空项 1:_ (正确答案:8)解析:35.函数 fun的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类型,另一个参数是int类型引用,声明函数 fun的原型的语句为 1。(分数:1.00)填空项 1:_ (正确答案:char*fun(char,int&))解析:36.string类中用于交换两个字符串对象的值的成员函数为 1。(分数:1.00)填空项 1:_ (正确答案:swap-|_|-)解析:37.无论变量 x和 y是整型还是浮点类型,x*y 都表示这两个变量的积,这是典型的 1 的例子。(分数:1.00)填空项 1:_ (正
32、确答案:运算符重载)解析:38.执行下列代码int a=29,b=1001;coutasetw(6)bendl;程序输出结果是:_。(分数:1.00)填空项 1:_ (正确答案:291001(两个空格))解析:39.在 C+中,赋值表达式 y=x+的含义是 1。(分数:1.00)填空项 1:_ (正确答案:先赋值后 x加 1)解析:40.设有如下定义:int x;若要将整型变量 y定义为变量 x的引用,则应使用的语句是 1。(分数:1.00)填空项 1:_ (正确答案:int& y=x;)解析:三、改错题(总题数:5,分数:20.00)41.#includeiostream.hvoid mai
33、n()float *p;p=new float5;for(i=0;i5;i+)cin*c(p+i);cout*(p+i)endl;deletep;(分数:4.00)填空项 1:_ (正确答案:for(i=0;i5;i+))解析:变量 i必须先定义后使用42.#includeiostream.htemplateclass Tclass fprivate:T x,y;public:void f1(T a,T b)x=a;y=b;T max()return(xy)? x:y;void main()finta;a.f1(3.5,3.8);couta.max()endl;(分数:4.00)填空项 1:_
34、 (正确答案:a.f1(3.5,3.8);或 finta;)解析:模板类型不一致43.#includeiostream.hclass testprivate:static int x;int y;public:void test1(int a,int b)x=a;y=b;void main()test a;a.test1(2,3);(分数:4.00)填空项 1:_ (正确答案:x=a;y=b;)解析:在类的非静态函数中不可直接访问类的静态成员44.#includeiostream.hclass fprivate:float x,y;public:void f1(float a,float b)
35、x=a;y=b;f()x=0;y=0;void move(float a,float b)x=x+a;y=y-b;void get()coutx yendl;void main()f *p,a;a.f1(1.6,3.8);p=&a;p.get();(分数:4.00)填空项 1:_ (正确答案:p.get();)解析:p 作为指针引用时使用“-”45.#ineludeiostream.hclass pointint x;public:void init(int a)x=a;int getx()return x;void setx(int a)x=a;void main()point a;a.in
36、it(20,30);couta.getx()endl;(分数:4.00)填空项 1:_ (正确答案:a.init(20,30);)解析:init()函数的参数只定义了一个,使用时用了两个实参四、完成程序题(总题数:5,分数:20.00)46.完成下面类中成员函数的定义。class testprivate:int n1;float f1;public:test(int,float f);test(test&);test:test(_)n1=n;f1=f;test:test(test&t)n1=t.n1;n=_;(分数:4.00)_正确答案:(int n,float ft.f1)解析:47.在下面
37、程序中的下划线处填上适当的语句,使程序的输出结果如下:11,7711,77源程序如下:#includeiostreamusing namespace std;class baseprivate:int x,y;public:void initxy(int a,int b)x=a;y=b;void show()_;void main()base a,b;a.show();b=a;b.show();(分数:4.00)_正确答案:(coutx“,“yendl;a.initxy(11,77);)解析:48.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=1,y=2x=30,y=40源程
38、序如下:#includeiostream.hclass Sampleint x,y;public:Sample()x=y=0;Sample(int i,int j)x=i;y=j;void copy(Sample& s);void setxy(int i,int j)x=i;y=j;void print()cout“x=“x“,y=“yendl;void Sample:copy(_)x=s.x;y=s.y;void func(_)s1.setxy(10,20);s2.setxy(30,40);void main()Sample p(1,2),q;q.copy(p);func(p,q);p.pr
39、int();q.print();(分数:4.00)_正确答案:(Sample &sSample s1,Sample &2 或 Sample &s2,Sample s1)解析:49.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。202122a0=20a1=21a2=22程序清单如下:#includeiostreamusing namespace std;class baseprivate:int x;public:void setx(int a)x=a;int getx()return x;void main()base a3,*p;a0.setx(20);a1.setx(21);
40、a2.setx(22);for(P=a;pa+3;p+)_for(int i=0;i=2;i+)_(分数:4.00)_正确答案:(coutp-getx()endl;cout“s“i“=“ai.getx()endl;)解析:50.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=2y=3源程序如下:#includeiostream.hclass Sampleint x,y;public:Sample()x=y=0;Sample(_)x=a;y=b;void disp()cout“x=“x“,y=“yendl;void main()Sample s(2,3),_p-disp();(分数:4.00)_正确答案:(int a,int b*p=&s;)解析:五、程序分析题(总题数:2,分数:10.00)51.请给出下面程序的输出结果#includeiostreamusing namespace std;void fun()static int n=25;n-:cout“n=“nendl:void main()for(int i=0;i=2;i+)fun();(分数:5.00)_正确答案:(n=24n=23n=22)解析:52.请给出下面程序的输出结果#includei
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1