东南大学C期末考试题.docx

上传人:b****1 文档编号:13828152 上传时间:2023-06-17 格式:DOCX 页数:17 大小:23.13KB
下载 相关 举报
东南大学C期末考试题.docx_第1页
第1页 / 共17页
东南大学C期末考试题.docx_第2页
第2页 / 共17页
东南大学C期末考试题.docx_第3页
第3页 / 共17页
东南大学C期末考试题.docx_第4页
第4页 / 共17页
东南大学C期末考试题.docx_第5页
第5页 / 共17页
东南大学C期末考试题.docx_第6页
第6页 / 共17页
东南大学C期末考试题.docx_第7页
第7页 / 共17页
东南大学C期末考试题.docx_第8页
第8页 / 共17页
东南大学C期末考试题.docx_第9页
第9页 / 共17页
东南大学C期末考试题.docx_第10页
第10页 / 共17页
东南大学C期末考试题.docx_第11页
第11页 / 共17页
东南大学C期末考试题.docx_第12页
第12页 / 共17页
东南大学C期末考试题.docx_第13页
第13页 / 共17页
东南大学C期末考试题.docx_第14页
第14页 / 共17页
东南大学C期末考试题.docx_第15页
第15页 / 共17页
东南大学C期末考试题.docx_第16页
第16页 / 共17页
东南大学C期末考试题.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

东南大学C期末考试题.docx

《东南大学C期末考试题.docx》由会员分享,可在线阅读,更多相关《东南大学C期末考试题.docx(17页珍藏版)》请在冰点文库上搜索。

东南大学C期末考试题.docx

东南大学C期末考试题

读书破万卷下笔如有神

2008-2009学年C++(下)期末考试模拟试题

一、选择题(每题2分,共30分)

1.下列程序段的运行结果是()。

charc[]=”\t\v\\0will\n”;cout<

A.4B.3C.9D.字符串中含有非法字符,输出结果不确定

2.已知定义类A,该类的构造函数的参数都没有缺省值。

执行语句:

Aa1

(2),a2(1,2),*p=newA[3];

则自动调用该类缺省的构造函数的次数为()。

A.1B.2C.3D.5

3.下列叙述正确的是()。

A.虚函数是一个static类型的成员函数

B.虚函数是一个非成员函数

C.包含虚函数的基类为虚基类

D.包含存虚函数的基类为抽象类

4.下列关于赋值兼容性规则的叙述不正确的是()。

A.派生类的对象可以赋值给基类的对象

B.基类的对象可以赋值给派生类的对象

C.派生类的对象可以初始化基类对象的引用

D.可以将派生类对象的地址赋值给其基类的指针变量

5.设有定义inta[][3]={1,3,5,7,9,11,13,15,17};int*p=a[2];则*(p+1)的值为()。

A.15B.7C.14B.6

6.C++中多态性包括两种:

编译时的和运行时的。

运行时多态性是通过()实现的。

①函数重载②运算符重载③类继承关系④动态链接⑤虚函数

A.①和②B.③和⑤C.④和⑤D.③和④

7.关于动态内存分配,对delete运算符的下列说法中,()是错误的。

A.应与new运算符配合使用。

B.可以在类的成员函数中使用。

C.对同一个指针变量可任意多次使用该运算符。

D.若a是一个二维数组,则delete[]a;可删除a所占用的存储空间。

8.设intx;int*p2=&x,*p1=&x;*p1=a;*p2=*b;则变量a和b的类型分别是()。

A.int和intB.int*和intC.int和int*D.int*和int*

9.下列关于成员函数的叙述不正确的是()。

A.成员函数一定是内联函数

B.成员函数可以重载

成员函数可以设置参数的默认值C.

读书破万卷下笔如有神

D.成员函数可以是静态的

10.以下不属于类的访问权限的是()。

A.publicB.protectedC.staticD.private

11.若要使用ifstream流定义一个流对象并打开一个文件时,应在程序开始使用#include

命令,使之包含()。

A.iostream.hB.fstream.hC.stdio.hD.strstream.h

12.下列叙述不正确的是()。

A.对象之间可以相互赋值B.对象可以用作函数参数

中可以有指向对象的指针D.C++对象可以用作数组的元素C.

)。

13.C++中不能被派生类继承的是(

B.虚函数A.析构函数C.静态成员函数D.运算符重载函数

)。

14.不属于构造函数的特点是(

B.返回类类型返回值具有与类名相同的函数名A.

C.允许重载D.在定义类的对象时自动调用

)。

类型相同的两个指针不能进行的运算是(15.

D.==C.=B.-A.+

20二、填空题(每题2分,共分))。

1.函数参数传递方式有三种,分别为:

值传递、地址传递和(

)、继承性和多态性。

2.面向对象的程序设计的三大特征是:

()构造函数的原型说明。

A(A&x);3.假定A为一个类,则语句是此类(

)。

4.在类的继承与派生中,缺省的继承方式是(5.C++的两种多态性分别是()多态性和()多态性。

)6.运算符重载有两种实现方法,一种是通过友元函数来实现,另一种通过(

函数来实现。

)文件。

根据数据的组织形式不同,可将文件分为二进制文件和(7.

若希望类中的成员只能被该类的成员函数及该类的派生类的成员函数访问,则应加8.

(上访问权限:

)。

b

bA9.假定类中有一个公用属性的静态数据成员,在类外不通过对象名访问该成员的写法为(。

分,共30分)5三、阅读程序题(每题下列程序运行结果为(1.。

)#include

#include

chars(char*w,inty)

{

读书破万卷下笔如有神

chart,*s1,*s2;

s1=w;

s2=w+y+5;

while(s1>s2)

{

t=*s1++;*s1=*s2--;*s2=t;

return*s1;

}

return*s1+2;

}

voidmain(void)

{

char*p={S};

cout<

}

2.下列程序的输出结果是()。

#include

classA

{

public:

intX;

A(intx){X=x*x;}

};

classS

{intx;

Aa;

public:

S(intb,intc):

a(c)

{x=b+a.X;}

潶摩猠潨?

笩潣瑵?

硜尽?

?

攼摮?

?

};

voidmain(void)

{Ss1(2,3);

s1.show();

}

)。

下列程序的运行结果是(3.

#include

classA

{

public:

intn;

A(){cout<

读书破万卷下笔如有神

};

classB:

publicA

{

public:

B(){cout<

};

classC:

publicB

{

Aa;

public:

C():

a(),B(){cout<

};

voidmain(void)

{Cc;

}

)4.下列程序的运行结果是(。

#include

classBase

{

protected:

int*p;

public:

Base(inta=0)

{p=newint(a);}

~Base()

{deletep;}

virtualvoidprint()

{cout<<<*p<

};

classDerived:

publicBase

{

staticinty;

public:

Derived(intb=0)

{*p=b;y++;}

voidprint()

{cout<<*p<<','<

};

intDerived:

:

y=100;

voidmain(void)

{

Derivedd(50);

读书破万卷下笔如有神

Base*pb=&d;

pb->print();

Derivedd1(20);

d1.print();

}

5.下列程序的运行结果是()

#include

classB

{

inta,b;

public:

B(intaa=0,intbb=0){a=aa;b=bb;}

voidoperator++();

voidoperator++(int);

voidshow(){cout<

};

voidB:

:

operator++()

{

a+=2;

b+=5;

}

voidB:

:

operator++(int)

{

a+=5;

b+=2;

}

voidmain(void)

{

Bx(3,5);

x++;

x.show();

}

)。

下列程序的运行结果是(6.

#include

classA

{

public:

A(intn){num=n;}

intcompare(Aa)

{

读书破万卷下笔如有神

if(this->num==a.num)return1;

elsereturn0;

}

private:

intnum;

};

voidmain(void)

{

Aaa(5);

Abb(10);

Acc(5);

cout<

cout<

}

四、完善程序(每空2分,供20分)

1.下面的程序中定义了圆类Circle、长方形类Rect、圆角长方形类RoundRect,其中

RoudRect共有继承于Circle和Rect类。

试完成程序。

#include

#include

classCircle

{

doubleradius;

public:

Circle(doubler):

{}

doublearea(){return3.14*radius*radius;}

};

classRect

{

doublewidth,height;

public:

Rect(doublew,doubleh){width=w;height=h;}

doublearea(){returnheight*width;}

};

classRoundRect:

publicCircle,Rect

{

charcolor[5];

public:

RoundRect():

Circle(r),Rect(w,h)

{

strcpy(color,c);

}

char*getcolor(){returncolor;}

读书破万卷下笔如有神

};

voidmain(void)

{

潒湵剤捥?

牲〨?

?

?

金?

白色);

cout<

}

2.下列程序通过重载运算符“*”,直接实现两个一维数组对应元素相乘运算。

设数组a,

b分别为:

inta[10]={1,2,3,4,5,6,7,8,910};

intb[10]={1,2,3,4,5,6,7,8,9,10};

相乘后的结果为{1,4,9,16,25,36,49,64,81,100}。

同时通过重载运算符“=”,直接实现

两个一维数组的赋值运算。

试完善程序。

#include

#include

classA

{

intx[10];

public:

A(){for(inti=0;i<10;i++)x[i]=0;}

A(int*p)

{

for(inti=0;i<10;i++)

}

Aoperator*(Aa)

{

At;

for(inti=0;i<10;i++)

returnt;

}

Aoperator=(Aa)

{

for(inti=0;i<10;i++)

return*this;

}

voidshow(){for(inti=0;i<10;i++)cout<

};

voidmain(void)

{

inta[10]={1,2,3,4,5,6,7,8,9,10};

intb[10]={1,2,3,4,5,6,7,8,9,10};

Aa1(a),a2(b),a3;

a3=a1*a2;

读书破万卷下笔如有神

a3.show();

}

3.下面的程序的功能是比较两个字符串是否相等,若相等返回1,否则返回0。

请完成

程序。

#include

intf(char*s1,char*s2)

{

char*p=s1,*q=s2;

while()

{

q++;

p++;

}

return();

}

voidmain(void)

{

chars1[100],s2[100];

cin.getline(s1,100);

cin.getline(s2,100);

cout<

}

4.下列函数的功能是将一个新生成的链表按照从小到大的顺序插入到现有的链表中,

请完成函数。

structnode{

intdata;

node*next;

};

node*Insert(node*head,node*p)//将p指向的结点插入到head代表的链表中

{

node*p1,*p2;

if(head==0){//空链表,插入到链表首部

head=p;

returnhead;

}

if(head->data>=p->data){//非空链表,p的数据项比首节点的数据项小,插入到链首

p->next=head;

returnhead;

读书破万卷下笔如有神

}

p2=p1=head;

while(){//找到要插入的位置

p1=p2;p2=p2->next;

}

if(p2->datadata){//p代表的结点的数据项最大,插入到表尾

p2->next=p;p->next=0;

}

else{//插入到p1和p2指向的结点之间

}

}

五、上机编程题(每题50分,共100分)

1.建立一个str类,完成对字符串循环左移的功能。

即从第二个字符开始,以后的每个字符都依次前移一个字符,而原来的第一个字符放在串中的最后一个字符。

当要平移m个字符时,则要进行m次的循环左移。

例如:

“ABCD”循环左移2个字符后为“CDAB”。

要求如下:

(1)私有数据成员

char*w;指向待左移字符串。

intm,len;分别用于存储循环左移的次数及字符串的长度。

(2)公有成员函数

构造函数str(char*p,intn,intk):

初始化各数据成员。

voidmove():

循环左移。

voidshow():

输出字符串数据成员

(3)编写一个程序测试该类,使用以下测试数据:

a[]=”ABCD”,左移3个字符。

要求输出字符串。

2.请将压缩包中的文本文件in.dat的内容读入到数组A[3][3]中,并将转置后的数组A中。

请完成程序。

out.dat的内容写入到文本文件.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2