1、上海电机学院2023年专升本《C++程序设计》考试试卷 A卷 一、选择题(每题1分,共25分) 1. 编写C++程序一般需通过的几个环节依次是( )。 A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试 C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接 2. 可用作C++语言用户标记符的一组标记符是( )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a do sizeof 3. 设”
2、int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。
A. 12 B. 144 C. 156 D. 288
4. x>0 || y==5的相反表达式为( )。
A. x<=0 && y!=5 B. x<=0 || y!=5
C. x>0 || y!=5 D. x>0 && y==5
5. 在下面循环语句中循环体执行的次数为( )。
for(int i=0; i
3、k; A. n/2 B. n/2+1 C. n/2-1 D. n-1 6. switch语句可以改写为( )语句。 A. for B. if C. do D. while 7. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。 A. 0 B. 4 C. 8 D. 6 8. 函数重载是指( )。
4、 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 9. 若用数组名作为函数调用的实参,传递给形参的是( )。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组所有元素的值 D. 数组元素的个数 10. 将两个字符串连接起来组成一个字符串时,选
5、用( )函数。 A. strlen() B. strcap() C. strcat() D. strcmp() 11. C++语言的编译系统对宏命令的解决是( )。 A. 在程序运营时进行 B. 在程序连接时进行 C. 和C++程序的其它语句同时进行编译 D. 在对源程序中其它成分正式编译之前进行 12. 在下面存储类中,( )的对象不是局部变量。 A. 函数形参 B. 自动类 C. 外部静态类 D. 寄存器类 1
6、3. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为( )。 A. int *p=new int[30]; B. int *p=new int(30); C. int *p=new [30]; D. *p=new int[30]; 14. 关于封装,下列说法中不对的的是( )。 A. 通过封装,对象的所有属性和操作结合在一起,形成一个整体 B. 通过封装,一个对象的实现细节被尽也许地隐藏起来(不可见) C. 通过封装,每个对象都成为相对独立的实体
7、D. 通过封装,对象的属性都是不可见的 15. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 A. x(a) B. x[a] C. x->a D. x.a 16. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( )。 A. abc B. *this C. this D. this& 17. 结构中定义的成员默认为( )访问属性。
8、 A. public B. private C. protected D. friend 18. 假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 复制构造函数 19. 一个类的静态数据成员所表达属性 ( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 20. 当将
9、一个类A或函数f()说明为另一个类B的友元后,类A或函数f()可以直接访问类B的( )。 A. 只能是公有成员 B. 只能是保护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员 21. 假如表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表达为( )。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(a+b) 22.
10、从一个基类派生出的各个类的对象之间( )。 A. 共享所有数据成员,每个对象还包含基类的所有属性 B. 共享部分数据成员,每个对象还包含基类的所有属性 C. 不共享任何数据成员,但每个对象还包含基类的所有属性 D. 共享部分数据成员和函数成员 23. 对于公有继承,基类的公有和保护成员在派生类中将( )成员。 A. 所有变成公有 B. 所有变成保护 C. 所有变成私有 D. 仍然相应保持为公有和保护
11、 24. C++中的虚基类机制可以保证:( )。 A. 限定基类只通过一条途径派生出派生类 B. 当一个类多次间接从基类派生以后,其基类只被一次继承 C. 当一个类多次间接从基类派生以后,派生类对象能保存多份间接基类的成员 D. 允许基类通过多条途径派生出派生类,派生类也就能多次继承该基类 25. 派生类的对象对其基类中( )可直接访问。 A. 公有继承的私有成员 B. 公有继承的公有成员 C. 公有继承的保护成员 D. 私有继承的公有成员
12、 二、填空题(25%) 1. 用于从键盘上为变量输入值的标准输入流对象是________。 2.程序文献的编译错误分为________和________两类。 3. 十进制常数245相应的八进制的C++表达为_0_________。 4. 字符串”This\’s a book.\n”的长度为__________。 5. 数学算式的C++表达式为________________。 6. 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被反复执行______次后正常结束。 7. strlen(”appl
13、e”)的值为_______,strcmp(”a”,”A”)的值为________。 8. 在C++语言中,一个函数由函数头和__________组成。 9. 全局变量和静态局部变量具有静态生存期,存放在内存的____________区中。 10. 假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为________。 11. 执行int *p=new int操作得到的一个动态分派的整型对象为__*p______。 12. 以面向对象方法构造的系统,其基本单位是__________。 13. C++支持两种多态性:_________时的多态性和
14、时的多态性。 14. 为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为________。 15. 若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的__*this______就代表了类外的x对象。 16.假定AB为一个类,则类定义体中的“AB(AB& x);”语句为该类______________的原型语句。 17. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。 18. 派生类的成员函数可以直接访问基类的 成员,不能直接访问基类的 ______成
15、员。
19. 引进虚基类的主线目的是为了消除____________。
20. 设有如下定义:
#include 16、ndl; }
};
void main()
{ A1 obj1;
A2 obj2;
…
}
派生类A2的成员函数show2()中可以访问的成员涉及a1、b2、 、 。
1. 阅读下面的程序,写出输出结果
#include 17、tch(a[i]%3) {
case 0: s0+=a[i];break;
case 1: s1+=a[i];break;
case 2: s2+=a[i];break;
}
}
cout< 18、
int * p=a;
for(int i=0;i 19、c int b=1;
a=a+1;
b=b*n;
return a*b;
}
void main( )
{ int i;
for(i=1;i<5;i++)
cout< 20、ndl;}
};
class BB
{ int n;
public:
BB(int j) {n=j; cout<<"调用类BB构造函数 n: "< 21、l; }
~CC() { cout<<"删除类 CC "< 22、
for(i=1;i<=100;i++)
a[i]=1;
a[1]=0;i=2;
while(i<=100)
{ for(j=i*i;j<= 100;j=j+i)
a[j]=0;
i++;
}
cout<<"\n";
for(i=2;i<=100;i++)
if(a[i]==1)
{cout< 23、计数器值;可进行增值和减值记数;可提供记数值。
#include 24、}
};
void main()
{ Counter a(0);
a.in_Counter();
a.init_Counter(10);
a.show();//show(a)
a.de_Counter();
cout< 25、母
public:
Franction(int a=1,int b=1)
{ nume=a;deno=b;}
friend Franction operator +(const Franction &x1,const Franction &x2)
{ int c,d;
c=x1.nume*x2.deno+x2.nume*x1.deno;
d=x1.deno*x2.deno;
return Franction(c,d);
}
friend Franction operator -(const Franction &x1,const 26、Franction &x2)
{ int c,d;
c=x1.nume*x2.deno-x2.nume*x1.deno;
d=x1.deno*x2.deno;
return Franction(c,d);
}
void FranOutput()
{ cout< 27、2.FranOutput();
c3=c1+c2;
cout<<"c1+c2=";c3.FranOutput();
c4=c1-c2;
cout<<"c1-c2=";c4.FranOutput();
}
五.程序填空(每空1.5分,共12分)
1.求组合数值,如。 n!/(n-m)!*m!
#include 28、 fun(n)/(fun(n-m)*fun(m) ) ;
cout<<"c("< 29、 30、0];
order=0;
for(i=1;i<10;i++)
if(a[i]>max)
{max=a[i]; order=i; }
cout<<"max="< 31、5 12 27),则数组b中的数据为(87 108 27)。
2. 已知类定义如下,其中Shape为基类,园Circle和矩形Rectangle分别Shape的直接派生类,正文形Square为Rectangle的直接派生类和Shape的间接派生类。并计算园半径为10,矩形花边宽为10,20及正方形连长为10时它们的周长和面积。用抽象类指针输出所有值。 (10%)
#include
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818