专升本C考试A卷Word格式.docx
《专升本C考试A卷Word格式.docx》由会员分享,可在线阅读,更多相关《专升本C考试A卷Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
i++)
if(i>
n/2)break;
A.n/2B.n/2+1C.n/2-1D.n-1
6.switch语句能够改写为()语句。
A.forB.ifC.doD.while
7.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};
”,则元素a[2][1]的值为()。
A.0B.4C.8D.6
8.函数重载是指()。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
9.若用数组名作为函数调用的实参,传递给形参的是()。
A.数组的首地址B.数组中第一个元素的值
C.数组全部元素的值D.数组元素的个数
10.将两个字符串连接起来组成一个字符串时,选用()函数。
A.strlen()B.strcap()C.strcat()D.strcmp()
11.C++语言的编译系统对宏命令的处理是()。
A.在程序运行时进行
B.在程序连接时进行
C.和C++程序的其它语句同时进行编译
D.在对源程序中其它成分正式编译之前进行
12.在下面存储类中,()的对象不是局部变量。
A.函数形参B.自动类C.外部静态类D.寄存器类
13.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。
A.int*p=newint[30];
B.int*p=newint(30);
C.int*p=new[30];
D.*p=newint[30];
14.关于封装,下列说法中不正确的是()。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
15.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为()。
A.x(a)B.x[a]C.x->
aD.
16.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为()。
A.abcB.*thisC.thisD.this&
17.结构中定义的成员默认为()访问属性。
A.publicB.privateC.protectedD.friend
18.假定AB为一个类,则执行“ABr1=r2;
”语句时将自动调用该类的()。
A.无参构造函数B.带参构造函数
C.赋值重载函数D.复制构造函数
19.一个类的静态数据成员所表示属性()。
A.是类的或对象的属性B.只是对象的属性
C.只是类的属性D.类和友元的属性
20.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的()。
A.只能是公有成员B.只能是保护成员
C.只能是除私有成员之外的任何成员D.具有任何权限的成员
21.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。
A.+(b)B.+(a)
C.operator+(a,b)D.operator(a+b)
22.从一个基类派生出的各个类的对象之间()。
A.共享所有数据成员,每个对象还包含基类的所有属性
B.共享部分数据成员,每个对象还包含基类的所有属性
C.不共享任何数据成员,但每个对象还包含基类的所有属性
D.共享部分数据成员和函数成员
23.对于公有继承,基类的公有和保护成员在派生类中将()成员。
A.全部变成公有B.全部变成保护
C.全部变成私有D.仍然相应保持为公有和保护
24.C++中的虚基类机制可以保证:
()。
A.限定基类只通过一条路径派生出派生类
B.当一个类多次间接从基类派生以后,其基类只被一次继承
C.当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成员
D.允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类
25.派生类的对象对其基类中()可直接访问。
A.公有继承的私有成员B.公有继承的公有成员
C.公有继承的保护成员D.私有继承的公有成员
二、填空题(25%)
1.用于从键盘上为变量输入值的标准输入流对象是________。
2.程序文件的编译错误分为________和________两类。
3.十进制常数245对应的八进制的C++表示为_0_________。
4.字符串”This\’sabook.\n”的长度为__________。
5.数学算式
的C++表达式为________________。
6.若while循环的“头”为“while(i++<
=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。
7.strlen(”apple”)的值为_______,strcmp(”a”,”A”)的值为________。
8.在C++语言中,一个函数由函数头和__________组成。
9.全局变量和静态局部变量具有静态生存期,存放在内存的____________区中。
10.假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为________。
11.执行int*p=newint操作得到的一个动态分配的整型对象为__*p______。
12.以面向对象方法构造的系统,其基本单位是__________。
13.C++支持两种多态性:
_________时的多态性和__________时的多态性。
14.为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为________。
15.若采用(y)表达式调用一个成员函数,在成员函数中使用的__*this______就代表了类外的x对象。
16.假定AB为一个类,则类定义体中的“AB(AB&
x);
”语句为该类______________的原型语句。
17.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。
18.派生类的成员函数可以直接访问基类的成员,不能直接访问基类的______成员。
19.引进虚基类的根本目的是为了消除____________。
20.设有如下定义:
#include<
>
classA1
{inta1;
protected:
intb1;
public:
voidshow1(){cout<
<
”classA1”<
endl;
}
};
classA2:
publicA1
{inta2;
intb2;
voidshow2(){cout<
”classA2”<
voidmain()
{A1obj1;
A2obj2;
…
}
派生类A2的成员函数show2()中可以访问的成员包括a1、b2、、。
1.阅读下面的程序,写出输出结果
#include<
inta[8]={6,11,13,4,12,7,16,15};
voidmain()
{ints0,s1,s2;
s0=s1=s2=0;
8;
i++){
switch(a[i]%3){
case0:
s0+=a[i];
break;
case1:
s1+=a[i];
case2:
s2+=a[i];
}
cout<
s0<
'
\t'
s1<
s2<
2.阅读下面的程序,写出输出结果
voidfun(int*&
a,int&
m)
{a=newint[m];
int*p=a;
i<
m;
i++)
*p++=i*i+1;
voidmain()
{int*b,n=5;
fun(b,n);
cout<
b[i]<
’‘;
delete[]b;
3.阅读下面的程序,写出输出结果
#include<
intfun(intn)
{inta=1;
staticintb=1;
a=a+1;
b=b*n;
returna*b;
voidmain()
{inti;
for(i=1;
5;
fun(i)<
4.阅读下面的程序,写出输出结果
classAA
{intn;
AA(inti){n=i;
"
调用类AA构造函数n:
"
n<
~AA(){cout<
删除类AA"
classBB
public:
BB(intj){n=j;
调用类BB构造函数n:
j<
~BB(){cout<
删除类BB"
classCC:
publicBB,publicAA
{
CC(inta,intb,intc):
AA(a),BB(b),n(c)
{cout<
调用类CC构造函数n:
~CC(){cout<
删除类CC"
}
private:
下列程序是输出设1-100之间素数,并且每行只输出5个数。
{inti,j,t,k=0;
inta[101];
for(i=1;
=100;
a[i]=1;
a[1]=0;
i=2;
while(i<
=100)
{for(j=i*i;
=100;
j=j+i)
a[j]=0;
i++;
cout<
\n"
;
for(i=2;
if(a[i]==1)
{cout<
k++;
if(k%5==0)cout<
2.定义计数器类Counter。
要求具有以下成员:
计数器值;
可进行增值和减值记数;
可提供记数值。
classCounter
Counter(inti=0)
{n=i;
voidinit_Counter(intm){n=m;
voidin_Counter(){n++;
voidde_Counter(){n--;
intget_Counter(){returnn;
friendvoidshow(Countert){cout<
{Countera(0);
();
(10);
用函数重载运算符,使对整形的运算符+、-适用于整数运算。
classFranction{
intnume;
序填空(每空分,共12分)
1.求组合数
值,如
。
n!
/(n-m)!
*m!
intfun(intn);
{intc,n,m;
cin>
n>
if(m>
n)cout<
输入数据错误。
else{c=fun(n)/(fun(n-m)*fun(m));
cout<
c("
m<
"
)="
c<
intfun(intn)
{intp=1;
inti;
for(i=2;
=n;
p*=i;
returnp;
2.从建立的数据文件中读入10个整数放在数组中,找出并输出10个数中的最大者和它在数组中的序号。
fstream>
iostream>
usingnamespacestd;
intmain()
{inta[10],max,i,order;
fstreaminfile("
ios:
:
in);
if(!
infile)
{cerr<
openerror!
exit
(1);
}
for(i=0;
10;
{infile>
a[i];
a[i]<
max=a[0];
order=0;
if(a[i]>
max)
{max=a[i];
order=i;
max="
max<
endl<
order="
order<
();
return0;
六、编程题(17%)
1.在二维数组a(3行4列)中选出各行最大的元素组成一个一维数组b。
(7%)
若数组a中的数据为(316876543211108101251227),则数组b中的数据为(8710827)。
2.已知类定义如下,其中Shape为基类,园Circle和矩形Rectangle分别Shape的直接派生类,正文形Square为Rectangle的直接派生类和Shape的间接派生类。
并计算园半径为10,矩形花边宽为10,20及正方形连长为10时它们的周长和面积。
用抽象类指针输出所有值。
(10%)
constfloatPI=;
classShape//几何图形抽象类
{public:
virtualfloatGetPerimeter()=0;
//纯虚函数,计算周长
virtualfloatGetArea()=0;
//纯虚函数,计算面积