c期末考试题及答案.docx

上传人:b****2 文档编号:1575591 上传时间:2023-05-01 格式:DOCX 页数:10 大小:17.80KB
下载 相关 举报
c期末考试题及答案.docx_第1页
第1页 / 共10页
c期末考试题及答案.docx_第2页
第2页 / 共10页
c期末考试题及答案.docx_第3页
第3页 / 共10页
c期末考试题及答案.docx_第4页
第4页 / 共10页
c期末考试题及答案.docx_第5页
第5页 / 共10页
c期末考试题及答案.docx_第6页
第6页 / 共10页
c期末考试题及答案.docx_第7页
第7页 / 共10页
c期末考试题及答案.docx_第8页
第8页 / 共10页
c期末考试题及答案.docx_第9页
第9页 / 共10页
c期末考试题及答案.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c期末考试题及答案.docx

《c期末考试题及答案.docx》由会员分享,可在线阅读,更多相关《c期末考试题及答案.docx(10页珍藏版)》请在冰点文库上搜索。

c期末考试题及答案.docx

c期末考试题及答案

a.xxb.下划线

c.大小写字母d.数字字符

3.为了避免嵌套的if-else语句的二义性,C语言规定else总是与(C)组成配对关系。

a.缩排位置相同的ifb.在其之前未配对的ifc.在其之前未配对的最近的ifd.同一行上的if

4.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(C)。

a.1b.0c.6d.2

5.设"char**s;",以下正确的表达式是(B)。

a.s="computer";b.*s="computer";

c.**s="computer";d.*s='c';

6.对于"int*pa[5];"的描述中,(D)是正确的。

a.pa是一个指向数组的指针,所指向的数组是5个int型元素b.pa是一个指向某数组中第5个元素的指针,该元素是int型变量

c.pa[5]表示某个元素的第5个元素的值

d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针

7.在下列表示引用的方法中,(A)是正确的。

已知:

intm=10;

a.int&x=m;b.int&y=10;

c.int&z;d.float&t=&m;

8.下列for循环的次数为(B)。

for(i=0,x=0;!

x&&i<=5;i++)

a.5b.6c.1d.无限

9.对于C/C++语言的函数,下列叙述中正确的是(A)。

a.函数的定义不能嵌套,但函数调用可以嵌套

b.函数的定义可以嵌套,但函数调用不能嵌套

c.函数的定义和调用都不能嵌套

d.函数的定义和调用都可以嵌套

10.在一个被调用函数中,关于return语句使用的描述,(D)是错误的。

a.被调用函数中可以不用return语句

b.被调用函数中可以使用多个return语句

c.被调用函数中,如果有返回值,就一定要有return语句d.被调用函数中,一个return语句可以返回多个值给调用函数

11.在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)。

a.xx函数b.重载函数

c.递归调用d.嵌套调用

12.使用fseek函数可以实现的操作是(A)。

a.改变文件指针的当前位置

b.文件的顺序读写

c.文件的随机读写

d.以上都不对

13.下列存储标识符中,(C)的可见性与存在性不一致。

a.外部类b.自动类

c.内部静态类d.寄存器类

14.在如下结构定义中,不正确的是(B)。

a.structstudent

{intno;

charname[10];

floatscore;

};

b.structstud[20]

{

intno;

charname[10];

floatscore;

};

c.structstudent

{

intno;

charname[10];

floatscore;

}stud[20];

d.struct

{

intno;

charname[10];

floatscore;

}stud[100];

15.将两个字符串连接起来组成一个字符串时,选用(C)函数。

a.strlen()b.strcpy()

c.strcat()d.strcmp()

16.(D)不是构造函数的特征

a.构造函数的函数名与类名相同

b.构造函数可以重载

c.构造函数可以设置缺省参数

d.构造函数必须指定类型说明

17.已知:

类A中一个成员函数说明如下:

voidSet(A&a);

其中,A&的含义是(C)。

a.指向类A的指针为a

b.将a的地址值赋给变量Set

c.a是类A对象的引用,用来作函数Set()的参数

d.变量A与a按位与作为函数Set()的参数

18.已知:

print()函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的。

a.voidprint()const;b.constvoidprint();c.voidconstprint();d.voidprint(const);

19.关于虚函数的描述中,(C)是正确的。

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

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

c.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

d.派生类的虚函数与基类的虚函数具有不同的参数个数和类型

20.关于new运算符的下列描述中,(D)是错的。

a.它可以用来动态创建对象和对象数组

b.使用它创建的对象和对象数组可以使用运算符delete删除c.使用它创建对象时要调用构造函数

d.使用它创建对象数组时必须指定初始值

三、(6分)分析下面程序的运行结果

#include

classB

{

public:

B(){}

B(inti){b=i;}

virtualvoidvirfun()

{

cout<<"B:

:

virfun()called.\n";

}

private:

intb;

};

classD:

publicB

{

public:

D(){}

D(inti,intj):

B(i){d=j;}

private:

intd;

voidvirfun()

{

cout<<"D:

:

virfun()called.\n";

}

};

voidfun(B*obj)

{

obj->virfun();

}

voidmain()

{

D*pd=newD;

fun(pd);

}

四、(9分)下面的程序可以统计命令行第一个参数中出现的字母个数,请填充下面空白,完成程序。

#include

#include

voidmain(intargc,argv[];)

{

char*str;

intcount=0;

if(argc<2)exit

(1);

str=;

while(*str)

if(isalpha())count++;

printf("\n字母个数:

%d\n",count);

}

提示:

intisalpha(intch)函数功能是检查ch是否是字母

五、(8分)定义一个字符栈类Stack(包括类的实现)。

数据成员包括一个存放字符的数组stck[]和一个栈指针tos。

栈数组的尺寸由常量SIZE确定。

栈的基本操作为Push()和Pop()。

六、(10分)完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。

voidinverse(int*a,intn)

{

}

七、(12分)下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。

请完成该函数。

intstr_count(char*substr,char*str)

{

}

二、问答题

1、虚析构函数有什么作用?

解答要点:

对象销毁时,需要调用析构函数。

在多态调用时,是用基类的指针访问派生类的对象。

如果析构函数是非虚函数,则基类指针只能访问基类的析构函数,而不能访问派生类的析构函数,导致派生类对象销毁时,没有调用派生类的析构函数,只是调用了基类的析构函数。

如果把析构函数定义成虚函数,则可克服这个问题。

2、拷贝构造函数在哪几种情况下调用?

解答要点:

用一个对象初始化另一个对象时

当用对象作为函数参数传递时

当函数返回对象时

3、函数重载与函数覆盖有什么不同,它们与多态有什么关系?

解答要点:

函数重载是指函数名相同,而函数的参数个数或类型不同;覆盖是指在派生类中成员函数与基类成员函数的函数名、参数个数、类型与返回值均相同;C++中正是通过虚函数的覆盖,实现多态的功能。

4、C++继承是如何工作的?

答:

继承使得派生类能够使用基类的公有和保护成员,从而实现代码的复用,派生类可以增加成员,也可以隐藏和覆盖基类的成员。

对于公有继承,基类成员的访问权限在派生类保持不变。

5、类与对象有什么区别?

答:

类是类型,是对象的抽象,对象是类的具体实例。

一个类可以有多个对象,每个对象都有自己的存储单元,而类不占存储单元。

三、运行结果为:

D:

:

virfun()called.

四、填空

①char*②argv[1]③*str++

五、(8分)定义一个字符栈类Stack(包括类的实现)。

数据成员包括一个存放字符的数组stck[]和一个栈指针tos。

栈数组的尺寸由常量SIZE确定。

栈的基本操作为Push()和Pop()。

constintSIZE=27;

classStack

{

public:

Stack():

tos(0){};

voidPush(charch);

charPop();

private:

charstck[SIZE];

inttos;

};

voidStack:

:

Push(charch)

{

if(tos==SIZE)

cout<<"\nStackisfull\n";

else{

stck[tos]=ch;tos++;

}

}

charStack:

:

Pop()

{

if(tos==0){

cout<<"\nStackisempty\n";

return0;

}

tos--;

returnstck[tos];

}

六、(10分)完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。

voidinverse(int*a,intn)

{

}

inti,*p;

p=newint[n];

for(i=0;i<=n-1;i++)

p[i]=a[i];

for(i=0;i<=n-1;i++)

a[i]=p[n-i-1];

delete[]p;

七、(12分)下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。

请完成该函数。

intstr_count(char*substr,char*str)

{

}

intcount=0;

char*pChar;

if(substr==NULL||str==NULL)returncount;

while(*str!

='\0'){

pChar=substr;

while(*pChar==*str){

pChar++;

if(*pChar=='\0'){

count++;break;

}

elsestr++;

}//Matchwhile(*pCh...)statement

str++;

}//Matchwhile(*str...)statement

returncount;

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

当前位置:首页 > 工作范文 > 行政公文

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

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