2024年C++ C笔试题题库_第1页
2024年C++ C笔试题题库_第2页
2024年C++ C笔试题题库_第3页
2024年C++ C笔试题题库_第4页
2024年C++ C笔试题题库_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++/C试题

本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语

法,不包括数据结构、算法以及深奥的语法。考试成绩能反应出考生的编程质量

以及对c十十/c的了解程度,但不能反应考生的智力和软件开发能力。

笔试时间90分钟。请考生仔细答题,切勿轻视。

一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)

提示:这里“零值”能够是0,0.0,FALSE或者“空指针”。例如int变量n与

“零值”比较的if语句为:

if(n==0)

if(n!=0)

以此类推。

请写出BOOLflag与“零值”比较的if语句:

请写出tloalx与“零值”比较的if语句:一

请写出char*p与“零值”比较的if语句:

二、如下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)

charstr[]="Hello”;voidFunc(charstrflOO])

char*p=str;{

intn=10;请计算

请计算sizeof(str)=

sizeof(str)=)

void*p=malloc(100);

sizeof(p)=请计算

sizeof(p)=

sizeof(n)=

三、简答题(25分)

1、头文献中的ifndef/define/endif干什么用?

2、#include<filename.h>和#include"fHename.h”有什么区分?

3、const有什么用途?(请最少阐明两种)

4、在C++程序中调用被C编译器编译后的函数,为何要加extern申明?

5、请简述如下两个for循环的优缺陷

//第一个//第二个

for(i=0;i<N;i++)if(condition)

((

if(condition)for(i=0;i<N;i++)

DoSomethingO;DoSomethingO;

else)

DoOtherthing();else

)(

for(i=0;i<N:i++)

DoOtherthingO;

)

优点:优点:

缺陷:缺陷:

四、有关内存的思考题(20分)

voidGelMemory(char*p)char木GetMe山。ry(void)

((

p=(char*)malloc(100);charp[]="helloworld";

)returnp;

voidTest(void))

(voidTest(void)

char*str=NULL;(

GetMemory(str);char*str=NULL;

strcpy(str,"helloworld");str=GetMemory();

printf(str);printf(str);

))

请问运行Test函数会有什么样的成请问运行Test函数会有什么样的成

果?果?

答:答:

VoidGetMemory2(char**p,intnum)voidTest(void)

((

*p=(char*)malloc(num);char*str=(char*)

}malloc(100);

voidTest(void)strcpy(str,"hello”);

(free(str);

char*str=NULL;if(str!=NULL)

GetMemory(&str,100);(

strcpy(str,"hello");strcpy(str,"world”);

printf(str);printf(str);

))

请问运行Test函数会有什么样的成)

果?请问运行Test函数会有什么样的成

答:果?

答:

五、编写strcpy函数(10分)

已知strcpy函数的原型是

char*strcpy(char*strDest,constchar*strSrc);

其中strDest是目标字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数strcpy

(2)strcpy能把strSrc的内容复制到strDest,为何还要char*类型的返回值?

六、编写类String的结构函数、析构函数和赋值函数(25分)

己知类String的原型为:

classString

public:

String(constchar*str=NULL);//一般结构函数

String(constString&other);//拷贝结构函数

-String(void);//析构函数

String&operate=(constString&othcr);//赋值函数

private:

char*m_data;//用于保存字符串

);

请编写String的上述4个函数。

C++/C试题的答案与评分标准

一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)

请写出BOOLflag与“零值”比较的if语句。(3分)

标准答案:如下写法均属不良格调,不得分。

if(flag)if(flag==TRUE)

if(!flag)if(flag==

1)

if(flag==FALSE)

if(flag==

0)

请写出floatx与“零值”比较的if语句。(4分)

标准答案示例:如下是错误的写法,不得分。

constfloatEPSINON=0.00001;if(x=0.0)

if((x>=-EPSINON)&&(x<=if(x!=

EPSINON)0.0)

不可将浮点变量用或“!二”与

数字比较,应当设法转化成“>=”或

“<二”山:类形式。

请写出char*p与“零值”比较的if语句。(3分)

标准答案:如下写法均属不良格调,不得分。

if(p==NULL)if(p==0)

if(p!=NULL)if(p!=0)

if(p)

if(!)

二、如下为WindowsNT下的32位C++程序,请计算sizcof的值(10分)

charstr[]="HcHo”;voidFunc(charstr[100J)

char*p=str;(

intn=10;请计算

请计算sizeof(str)=4(2分)

sizeof(str)=6(2分))

void*p=malloc(100);

sizeof(p)=4(2分)请计算

sizeof(p)=4(2分)

sizeof(n)=4(2分)

三、简答题(25分)

1、头文献中的ifndef/define/endif干什么用?(5分)

答:预防该头文献被重复引用。

2、#include<filename.h>和#include"filename.h”有什么区分?(5分)

答:对于#include<filename.h>,编译器从标准库途径开始搜索filename.h

对于#indude“filename.h",编译器从用户的工作途径开始搜索filename.h

3、const有什么用途?(请最少阐明两种)(5分)

答:(1)能够定义const常量

(2)const能够修饰函数的参数、返回值,甚至函数的定义体。被const修

饰的东西都受到强制保护,能够预防意外的变动,能提升程序的健壮性。

4、在C++程序中调用被C编译器编译后的函数,为何要加extern“C”?(5

分)

答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中

的名字与c语言的不一样。假设某个函数的原型为:voidfoo(intx,inty);

该函数被C编译器编译后在库中的名字为_f。。,而C++编译器则会产生像

_foo_int_int之类的名字。

C++提供了C连接互换指定符号extern“C”来处理名字匹配问题。

5、请简述如下两个for循环的优缺陷(5分)

for(i=0;i<N;i++)if(condition)

((

if(condition)for(i=0;i<N;i++)

DoSomethingO;DoSomethingO;

else}

DoOtherthingO;else

)(

for(i=0;i<N;i++)

DoOtherthingO;

)

优点:程序简洁优点:循环的效率高

缺陷:多执行了NT次逻辑判断,并缺陷:程序不简洁

且打断了循环“流水线”作业,使得

编译器不能对循环进行优化处理,减

少了效率。

四、有关内存的思考题(每题5分,共20分)

voidGetMemory(char*p)char*GetMemory(void)

((

p=(char*)malloc(100);charp[]="helloworld";

)returnp;

voidTest(void)}

{voidTest(void)

char*str=NULL;(

GetMemory(str);char*str=NULL;

strepy(str,"helloworld");str=GetMemory();

printf(str);printf(str);

))

请问运行Test函数会有什么样的成请问运行Test函数会有什么样的成

果?果?

答:程序瓦解。答:也许是乱码。

因为GetMemory并不能传递动态内因为GetMemoiy返回的是指向“栈内

存,存”的指针,该指针的地址不是NULL,

Test函数中的str一直都是NULL。但其原现的内容已经被清除,新内容不

strepy(str,"helloworld");将使程可知。

序瓦解。

voidGetMcmory2(char**p,intnum)voidTest(void)

((

*p=(char*)malloc(num);char*str=(char*)

)malloc(100);

voidTest(void)strepy(str,"hello”);

(free(str);

char*str=NULL;if(str!=NULL)

GetMemory(&str,100);{

strepy(str,"hello");strepy(str,"world”);

printf(str);printf(str);

})

请问运行Test函数会有什么样的成)

果?请问运行Test函数会有什么样的成

答,果?

(1)能够输出hello答:篡改动态内存区的内容,后果难以

(2)内存泄漏预料,非常危险。

因为free(str);之后,str成为野指针,

if(str!=NULL)语句不起作用。

五、编写strcpy函数(10分)

已知strcpy函数的原型是

char*strcpy(char*strDest,constchar*strSrc);

其中strDest是目标字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数strcpy

char*strcpy(char*strDest,constchar*strSrc);

(

assert((strDest!=NULL)&&(strSrc!=NULL));〃2分

char*address=strDest;〃2分

while((*strDest++=*strSrc++)!='\0')〃2分

NULL;

returnaddress;〃2分

)

(2)strcpy能把strSrc的内容复制到strDest,为何还要char*类型的返回值?

答:为了实现链式体现式。〃2分

例如intlength=strlen(strcpy(strDest,whelloworld"));

六、编写类String的结构函数、析构函数和赋值函数(25分)

己知类String的原型为:

classSiring

public:

String(constchar*str=NULL);//一般结构函数

String(constString&other);//拷贝结构函数

-String(void);//析构函数

String&operate=(constString&other);//赋值函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论