C++笔试模拟试题2.docx
《C++笔试模拟试题2.docx》由会员分享,可在线阅读,更多相关《C++笔试模拟试题2.docx(10页珍藏版)》请在冰豆网上搜索。
![C++笔试模拟试题2.docx](https://file1.bdocx.com/fileroot1/2023-1/23/57a2b5f8-f2bf-4132-9dd4-1439a0af724e/57a2b5f8-f2bf-4132-9dd4-1439a0af724e1.gif)
C++笔试模拟试题2
传智播客C++面向对象程序设计复习题
姓名____________得分____________排名____________
一.选择题,每题1分
1.在一个C++程序中,main函数的位置()。
(a)必须在程序的开头(b)必须在程序的后面
(c)可以在程序的任何地方(d)必须在其它函数中间
2.用C++语言编制的源程序要变为目标程序必须要经过()。
(a)解释(b)汇编(c)编辑(d)编译
3.C++程序基本单位是()。
(a)数据(b)字符(c)函数(d)语句
4.C++程序中的语句必须以()结束。
(a)冒号(b)分号(c)空格(d)花括号
5.执行C++程序时出现的“溢出”错误属于()错误。
(a)编译(b)连接(c)运行(d)逻辑
6.下列正确的八进制整型常量表示是()。
(a)0a0(b)015(c)080(d)0x10
7.下列正确的十六进制整型常量表示是()。
(a)0x11(b)0xaf(c)0xg(d)0x1f
8.执行语句inti=10,*p=&i;
后,下面描述错误的是()。
(a)p的值为10(b)p指向整型变量i
(c)*p表示变量i的值(d)p的值是变量i的地址
9.执行语句inta=5,b=10,c;int*p1=&a,*p2=&b;
后,下面不正确的赋值语句是()。
(a)*p2=b;(b)p1=a;
(c)p2=p1;(d)c=*p1*(*p2);
10.执行下面语句后,a和b的值分别为()。
inta=5,b=3,t;
int&ra=a;
int&rb=b;
t=ra;ra=rb;rb=t;
(a)3和3(b)3和5(c)5和3(d)5和5
11.设i=1,j=2,则表达式++i+j的值为()。
(a)1(b)2(c)3(d)4
12.在下列表达式选项中,()是正确。
(a)++(a++)(b)a++b(c)a+++b(d)a++++b
13.以下正确的函数原型为()。
(a)f(intx;inty);(b)voidf(x,y);
(c)voidf(intx,y);(d)voidf(int,int);
14.有函数原型voidfun1(int);下面选项中,不正确的调用是()。
(a)doublex=2.17;fun1(x);
(b)inta=15;fun1(a*3.14);
(c)intb=100;fun1(&b);
(d)fun1(256);
15.有函数原型voidfun2(int*);下面选项中,正确的调用是()。
(a)doublex=2.17;fun2(&x);
(b)inta=15;fun2(a*3.14);
(c)intb=100;fun2(&b);
(d)fun2(256);
16.有函数原型voidfun3(int&);下面选项中,正确的调用是()。
(a)intx=2.17;fun3(&x);
(b)inta=15;fun3(a*3.14);
(c)intb=100;fun3(b);
(d)fun3(256);
17.在VC中,若定义一个函数的返回类型为void,以下叙述正确的是()。
(a)用语句调用函数(b)用表达式调用函数
(c)有返回值(d)通过return语句可以返回指定值
18.使用重载函数编程序的目的是()。
(a)使用相同的函数名调用功能相似的函数(b)共享程序代码
(c)提高程序的运行速度(d)节省存贮空间
19.下列的描述中()是错误的。
(a)使用全局变量可以从被调用函数中获取多个操作结果
(b)局部变量可以初始化,若不初始化,则系统默认它的值为0
(c)当函数调用完后,静态局部变量的值不会消失
(d)全局变量若不初始化,则系统默认它的值为0
20.以下对一维数组a的正确定义是()。
(a)intn=5,a[n];(b)inta(5);
(c)constintn=5;inta[n];(d)intn;cin>>n;inta[n];
21.已知inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则不能表示数组a中元素的式子是()。
(a)*a(b)*p(c)a(d)a[p-a]
22.已知inta[3][3]={1,2,3,4,5,6,7,8,9};则不能表示数组元素a[2][1]的地址是()。
(a)&[2][1](b)*(a[2]+1)(c)a[2]+1(d)*(a+2)+1
23.若用数组名作为调用函数的实参,则传递给形参的是()。
(a)数组存贮首地址(b)数组的第一个元素值
(c)数组中全部元素的值(d)数组元素的个数
24.下列描述中,错误的是()。
(a)输出字符指针就是输出字符串
(b)输出字符指针的间接引用就是输出单个字符
(c)具有相同字符的两个字符串常量相等
(d)两个数组名的比较是地址的比较
25.判断字符串s1和s2是否相等的表达式为()。
(a)s1=s2(b)s1==s2
(c)strcpy(s1,s2)==0(d)strcmp(s1,s2)==0
26.若有以下声明和定义,则下列错误的引用是()。
structworker
{intno;
charname[20];
}w,*p=&w;
(a)w.no(b)p->no(c)(*p).no(d)*p.no
27.若有以下声明和定义,则下列引用非法的是()。
structdata
{intn;
floatscore;
data*q;
};
dataa[3]={1001,87,&a[1],1002,75,&a[2],1003,90,&a[0]};
data*p=a;
(a)p->n++(b)(*p).n++(c)++p->n(d)*p->n
28.关于类和对象不正确的说法是()。
(a)类是一种类型,它封装了数据和操作(b)对象是类的实例
(c)一个类的对象只有一个(d)一个对象必属于某个类
29.在类定义的外部,可以被访问的成员有()。
(a)所有类成员(b)private或protected的类成员
(c)public的类成员(d)public或private的类成员
30.关于this指针的说法错误的是()。
(a)this指针不一定显式说明
(b)当创建一个对象后,this指针就指向该对象
(c)成员函数拥有this指针
(d)静态成员函数拥有this指针
31.下面对构造函数的不正确描述是()。
(a)系统可以提供默认的构造函数
(b)构造函数可以有参数,所以也可以有返回值
(c)构造函数可以重载
(d)构造函数可以设置默认参数
32.下面对析构函数的正确描述是()。
(a)系统不可以提供默认的析构函数(b)析构函数必须由用户定义
(c)析构函数没有参数(d)析构函数可以设置默认参数
33.下面选项中,不是类的成员函数为()。
(a)构造函数(b)析构函数(c)友元函数(d)复制构造函数
34.下面对友员的错误描述是()。
(a)关键字friend用于声明友员
(b)一个类中的成员函数可以是另一个类的友员
(c)友员函数访问对象的成员不受访问特性影响
(d)友员函数通过this指针访问对象成员
35.在下列运算符中,不能重载的是()。
(a)<=(b)>>(c)?
:
(d)&=
36.下列关于运算符重载的描述中,()是正确的。
(a)可以改变参与运算的操作数个数(b)可以改变运算符原来的优先级
(c)可以改变运算符原来的结合性(d)不能改变原运算符的语义
37.不能用友员函数重载的是()。
(a)=(b)==(c)+=(d)!
=
38.下面描述中,错误的是()。
(a)只有系统预先定义的运算符才可能被重载
(b)使用类型转换函数不能把一个类转换为另一个类
(c)使用类型转换函数可以把类转换为基本类型
(d)类型转换函数只能定义为一个类的成员函数,不能定义为类的友员函数
39.在c++中,类与类之间的继承关系具有()。
(a)自反性(b)对称性(c)传递性(d)反对称性
40.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的()。
(a)public成员(b)private成员
(c)protected成员(d)友员
41.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的()。
(a)public成员(b)private成员
(c)protected成员(d)友员
42.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的()。
(a)public成员(b)private成员
(c)protected成员(d)友员
43.不论派生类以何种方式继承基类,都不能使用基类的()。
(a)public成员(b)private成员
(c)protected成员(d)public成员和protected成员
44.在创建派生类对象时,构造函数的执行顺序是()。
(a)对象成员构造函数、基类构造函数、派生类本身的构造函数
(b)派生类本身的构造函数、基类构造函数、对象成员构造函数
(c)基类构造函数、派生类本身的构造函数、对象成员构造函数
(d)基类构造函数、对象成员构造函数、派生类本身的构造函数
45.当不同的类具有相同的间接基类时,有特点()。
(a)各派生类对象将按继承路线产生自己的基类版本
(b)派生类对象无法产生自己的基类版本
(c)为了建立惟一的间接基类版本,应该必须改变类格
(d)为了建立惟一的间接基类版本,应该声明虚继承
46.在C++中,要实现动态联编,必须使用()调用虚函数。
(a)类名(b)派生类指针(c)对象名(d)基类指针
47.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值()。
(a)不同(b)相同(c)相容(d)部分相同
48.下面函数原型声明中,()声明了fun为纯虚函数。
(a)voidfun()=0;(b)virtualvoidfun()=0;
(c)virtualvoidfun();(d)virtualvoidfun(){};
49.若一个类中含有纯虚函数,则该类称为()。
(a)基类(b)纯基类(c)派生类(d) 抽象类
50.read函数的功能是从输入流中读取()。
(a)一个字符(b)当前字符(c)一行字符(d)指定若干个字符
51.下列选项中,用于清除基数格式位设置以十六进制输出的语句是()。
(a)cout<:
dec,ios:
:
basefield);
(b)cout<:
hex,ios:
:
basefield);
(c)cout<:
oct,ios:
:
basefield);
(d)cin>>setf(ios:
:
hex,ios:
:
basefield);
二.阅读下列程序,写出执行结果
1.#include
voidfunc(int,int,int*);
voidmain()
{intx,y,z;
func(5,6,&x);
func(7,x,&y);
func(x,y,&z);
cout<}
voidfunc(inta,intb,int*c)
{b+=a;*c=b–a;}
2.#include
voidfunc(int,int,int&);
voidmain()
{intx=0,y=1,z=2;
func(1,2,x);
func(x+y,y,y);
func(z,x+y,z);
cout<}
voidfunc(inta,intb,int&c)
{b+=a;c=b–a;}
3.#include
structemployee
{charname[20];
charsex;
};
voidfun(employee*p)
{if((*p).sex=='m')
cout<<(*p).name<}
voidmain()
{employeeemp[5]={"Liming",'m',"Wangxiaoping",'f',"Luwei",'m'};
inti;
for(i=0;i<3;i++)
fun(emp+i);
}
4.#include
classA
{public:
intf1();
intf2();
voidsetx(intm){x=m;cout<voidsety(intn){y=n;cout<intgetx(){returnx;}
intgety(){returny;}
private:
intx,y;
};
intA:
:
f1(){returnx+y;}
intA:
:
f2(){returnx-y;}
voidmain()
{Aa;
a.setx(10);a.sety(5);
cout<cout<}
5.#include
classT
{public:
T(intx){a=x;b+=x;};
staticvoiddisplay(Tc)
{cout<<"a="<private:
inta;
staticintb;
};
intT:
:
b=5;
voidmain()
{TA(3),B(5);
T:
:
display(A);
T:
:
display(B);
}
三.编程题
1.对3个变量按由小到大的顺序排序,要求调用排序函数时使用引用作为形式参数。
2.定义一个字符串类String,用来存放不定长的字符串,重载运算符“==”,“<”和“>”,用于两个字符串的等于、小于和大于的比较运算。
3.输入a,b和c的值,编写一个程序求这三个数的最大值和最小值。
要求把求最大值和最小值编写成函数,并使用指针作为形式参数把结果返回函数main。
4.有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。
要求输出分和秒的值。
5.声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。
6.定义一个rectangle类,它包含两个数据成员length和width;以及包含用于求长方形面积的成员函数。
再定义rectangle的派生类rectangular,它包含一个新数据成员height和用来求长方体体积的成员函数。
在main函数中,使用两个类,求某个长方形的面积和某个长方体的体积。