posts - 112, comments - 215, trackbacks - 0, articles - 34
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

高质量C/C++编程(测验习题)

Posted on 2007-04-17 13:25 济公 阅读(1166) 评论(1)  编辑 收藏 引用 所属分类: 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 )

以此类推。

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

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

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

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

char str[] = “Hello” ;

char *p = str ;

int n = 10;

请计算

 sizeof (str ) =       

void Func ( char str[100])

{

请计算

sizeof( str ) =        

}

sizeof ( p ) =

sizeof ( n ) =

void *p = malloc( 100 );

请计算

sizeof ( p ) =        

三、简答题(25分)

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

2、#include <filename.h> 和#include “filename.h” 有什么区别?

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

4、在C++ 程序中调用被C编译器编译后的函数,为什么要加extern “C”声明?

5、请简述以下两个for循环的优缺点

// 第一个

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

{

if (condition)

DoSomething();

else

DoOtherthing();

}

// 第二个

if (condition)

{

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

DoSomething();

}

else

{

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

DoOtherthing();

}

优点:       

缺点:       

优点:       

缺点:       

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

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;

GetMemory(str);

strcpy(str, "hello world");

printf(str);

}

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

答:                                

char *GetMemory(void)

{

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}

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

答:                                  

Void GetMemory2(char **p, int num)

{

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

}

void Test(void)

{

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello");

printf(str);

}

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

答:                                  

void Test(void)

{

char *str = (char *) malloc(100);

strcpy(str, “hello”);

free(str);

if(str != NULL)

{

strcpy(str, “world”);

printf(str);

}

}

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

答:                                  

五、编写 strcpy函数(10分)

已知strcpy函数的原型是

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

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

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

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

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

已知类String的原型为:

class String

{

public:

String(const char *str = NULL);// 普通构造函数

String(const String &other);//拷贝构造函数

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

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

private:

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

};

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

Feedback

# re: 高质量C/C++编程(测验习题)[未登录]  回复  更多评论   

2008-06-30 11:37 by tt
定义一个字符串类String,定义有关操作和重载有关运算符。
String采用动态变长结构,这样摆脱了定长数组的阴影。
只有注册用户登录后才能发表评论。