您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页面向对象设计试卷4

面向对象设计试卷4

来源:宝玛科技网
题 号 得 分 一 12 二 18 面向对象程序设计试题4

三 四 五 六 18 18 12 6 七 16 总 分 一、单项选择(每小题1分,共12分) 1.字符串“a+b=12\\n”的长度为( )。

A.6 B.7 C.8 D.9

2.假定一个二维数组的定义语句为\"int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。

A.0 B.4 C . 8 D.6 3.以下正确的描述是( )。

A.函数的定义可以嵌套,函数的调用不可以嵌套 B.函数的定义不可以嵌套,函数的调用可以嵌套 C函数的定义和函数的调用均可以嵌套 D.函数的定义和函数的调用均不可以嵌套 4.设有定义\"double array[10];”,则表达式sizeof(array)/sizeof(array[0])的结果为 ( )。

A.array数组首地址 B.array数组中元素个数

C .array数组中每个元素所占的字节数 D. array数组占的总字节数

5.要使p指向动态空间中的包含30个整数单元的数组使用的定义语句为( )。 A. int*p=new int[30] B. int*p=new int(30); C. int*p=new[30]; D. *p=new int[30];

6.在多文件结构的程序中,通常把类的定义单独存放于( )中。 A.主文件 B.实现文件 C.库文件 D.头文件

7.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为( )。

A.first+l B.(first+1)%MS C.(first-1)%MS D,(first+length)%MS

8.假定一个类的构造函数为“A(int aa=1,int bb=0){a=aa;b=bb;}”,则执行“A x(4);”语句后,x.a和x.b的值分别为( )。

A.1和0 B.1和4 B.4和1 D.4和0

9.假定AB为一个类,则执行\"AB a(2),b[3],*p[4];”语句时共调用该类构造函数的次数为( )。

A.3 B.4 C. 5 D.9

10.在成员函数中进行双目运算符重载时,其参数表中应带有( )个参数。 A.0 B. 1 C . 2 D.3

11.在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是( )。 A.该运算符是一个单目运算符 B.该运算符函数有一个隐含的参数this C.该运算符函数是类的成员函数 D.该运算符函数是类的友元函数 12.派生类的对象对其基类中( )可直接访问。 A.公有继承的公有成员 B.公有继承的私有成员

1

C.公有继承的保护成员 D.私有继承的公有成员

二、填空(每空1分,共18分)

1.多行注释的开始标记符和结束标记符分别为 和 。

2.假定x=5,y=6,则表达式x++*++y的值为 。 3.假定x是一个逻辑量,则x&&true的值为 。

4.含随机函数的表达式rand()%20的值在 至 区间内。

5.若需要把一个字符串“aaa”赋值到字符数组a中,则需要执行 字符串函数的调用来实现。

6.程序的编译是以 为单位进行的。

7.一个数组的数组名实际上是指向该数组的 元素的指针,并且在任何时候都不允许 它。

8.指针变量pv和pc定义为\"void*pv=“Hello,word!”; char*pc;”,要将pv值赋给pc,则正确的赋值语句是 。 9.C++支持两种多态性: 时的多态性(重载)和 时的多态性(虚函数)。

10.在一个用数组实现的队列类中,除了保存队列元素的数组成员外,还包含有两个数据成员,一个指明队首元素位置,另一个指明队列 。

11.在C++中定义类时,通常是利用 描述对象的“特征”; 利用 描述对象的“行为”。

12.假定用户为类AB定义了一个构造函数\"AB(int aa,char*bb=NULL):a(aa),b(bb){}”,则该类中至少包含有 个数据成员。

13.重载插入运算符<<时,其运算符函数的返回值类型应当是 。

三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分)

1.打印出2至99之间的所有素数(即不能被任何数整除的数)。 # include # include void main() {

int i,n;

for(n=2; (1) n<=99/n<100 ;n++){ int temp=int(sqrt(n));//求出n的平方根并取整 for(i=2; (2)i<=temp ; i++) if(n%i= =0) (3) break if(i>temp) cout<(1) (2) (3)

2.下面是对按从小到大排列的有序数组a[n]中进行二分查找x的算法,若查找成功返回该元素下标,否则返回一l。

int BinarySearch(inta[],int n,int x) {

int low=0,high=n—l //定义并初始化区间下界和上界变量 int mid; //定义保存中点元素下标的变量

2

while(10w<=high){ mid=——(1)——;

if(x==a[mid])——(2)一——

else if(xreturn-l; )

(1) (2) (3) 3.

Class A{ int a,b; public:

A(int aa=0,int bb=0) :a(aa),b(bb)——(1)——{}//分别用aa和bb对应初始化a和b

}; main(){

A x(5), y(x)——(2)——;//定义类A的对象x并用5初始化数据成员a,同时定义y并用x初始化数据成员a

A *p=&x—(3)——; //定义p指针,使之指向对象x }

(1) (2) (3)

四、写出程序运行结果(每小题6分,共18分) 1.#include

const int N=5; void main() {

int i,p=l,s=0; for(i=l;icout<1 1 1 2 2 3 3 6 9 4 24 33

2.#include void main() {

chars[3][5]={“1234”,“abcd”,“+-*/”}; char *p[3];

3

for(intI=0;I<3;I++)p[l]=s[I];

fOr(1=2:I>=0;1--)cout<3.#include class Date {

public:

void SetDate(int y,iht m,int d) {Year=y;Month=m;Day=d; }

void PrintDateO {eout<Date(int y,int m,int d) {SetDate(y,m,d); } protected:

int Year,Month,Day; };

class Time {

public:

void SetTime(int h,int m,int s) {Houre=h;Minutes=miSeconds=s; } void PrintTirne() { cout<< Houre<<\" :\"<Time() (SetTime(0,0,0); }

Time(int h,int m,int s) {SetTime(h,m,s);} protected:

iht Houre,Minutes,Seconds; };

class Date_Time: public Date, public Time {

public:

Date_Time ( ): Date (), Time () { }

Date_Time (int y,int mo,int d,int h,int mi,int s); Date(y,mo,d) ,Tirne(h,mi,s) { void PrintDate_Time() {PrintDateO;PrintTimeO;} void main() {

Date_Time dt_a,dt_b(2002, 10,1,6,0,0) dt_a. PrintDate_Time() dt_b. SetTime(23,59,59) dt_b. PrintDate_Time() dt_a. SetDate( 2002,12,31) dt_a. PrintDate Time() };

void main()

Date_Time dt_a, dt_b(2002,10,1,6,0,0)

4

dt_a. PrintDate_Time() dt_b. SetTime(23,59,59) dt_b. PrintDate_Time() dt_a. SetDate (2002,12,31 ) dt_a. PrintDate_Time() }

五、指出程序或函数的功能(每小题6分,共12分)

1. #include

double fl(int n){

double sign=1,s=1; for(int i=2;i<=n;i++){ s+=sign/(i*i); sign*=-1; }

return S; }

void main( ) { int a; cin>>a

cout<2.void Output(IntNode*f) {

if(! f)return; while(f){

cout<data<<‘’; f=f一>next; }

cout<假定IntNode的类型定义为: struct IntNode{

intdata; //结点值域 IntNode~next;//结点指针域 };

六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误 (6分)。

下面是一个类的定义,存在着3处语法错误(有的为单个字符),请指出错误行的行号并改正。

classCE{ //1行 private: //2行 int a,b; //3行

intgetminO{return(a5

public //5行 int c; //6行

void SetValue(int xl,int x2,int x3){ //7行 a=xl;b=x2;c=x3; //8行 }; //9行

int GetMin(); //10行 }; //11行

intGetMin(){ //12行

intd=getmin(); //13行 return(d错误行的行号为——、——和——。 分别改正为——、——和——。

七、编程(每小题8分,共16分)

1.求满足不等式2’+42+...+nZ<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用d。循环编程。

6

2.根据下面类中Uion函数的原型和注释写出它的类外定义。

classStrings{

char*s; //指向动态分配的字符串数组空间 intn: //记录字符串长度 public:

Strings(char-*str): //构造函数,利用str字符串长度初始化n, //利用str字符串初始化s所指的字符串空间 Strings(Strings&str); //拷贝构造函数

Strings& Give(Strings& str); //实现str赋值给*this的功能并返回*this Strings Uion(Strings& str); //实现8this和str中的字符串连接的功能, //把连接结果存人临时对象并返回

intLenth(){returnn;} //返回字符串长度 voidPrint(){eout<7

中面向对象程序设计试题4答案及评分标准

(供参考)

一、单项选择(每小题1分,共13分)

1.B 2.A 3.B 4.B 5.A 6.C 7.D 8.B 9.D 10,B 11.B 12.D 12.A 二、填空(每空1分,共17分)

1. /* */ 8.pc=(Char*)pv: 2. 35 9.编译 运行 3. x 10.长度(或为队尾位置) 4. 0 19 11.变量 函数 5.strcpy 12. 2

13.Ostream& 6.文件

7.第一个 修改

三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分)

1.

(1)n<=99 //2分 (2)i<=temp //2分 (3)break //2分 2.

(1)(low十high) //2分 (2)return mid //2分 (3)low=mid+t //2分 3.

(a):a(aa),b(bb) //2分 (b)A*(5),y(x) //2分 (c)A。p=&x //2分

注:x(S)与x=5等效,y(x)与y=x等效

四、写出程序运行结果(每小题6分,共18分) 1.

1 1 l //1分 2 2 3 //1分 3 6 9 //2分 4 24 33 //2分 2.

+-*/abcdl234 //6分 3.

2000/1/l //1分 0:0;0 //1分 2002 10/l //1分 23:59:59 //1分

8

2002/12/31 //1分 0:0:0 //1分

五、指出程序或函数的功能(每小题6分,共12分) 评分标准:根据叙述情况酌情给分。 1.计算并输出

的值,其中a的值由键盘输入。

2.对于以表头指针为f的链表,依次显示出每个结点的data域的值。 六、程序改锗,请根据程序段或函数模块的功能改写个别地方的错误(6分)

评分标准:每个数据占1分。 错误行的行号为5 9 12

分别改正为public: }int CE::GelMin(){ 七、编程(每小题8分,共16分) 评分标准:根据编程情况酌情给分。 1.

#include void main() {

int i=0; //用i作为依次取值偶数的变量 int s=0; //用s作为累加变量 do{

i十=2; S+=i*i;

}while(s<1000);

cout<<“n=”<Strings Strings::Uion(Strings& str){ SIrings r(“”); ln=n+str.n;

ls=newcha[r.n:n+1]; strcpy(r.s,s);

strcat(r. S,str.S); return r; }

9

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务