飞思卡尔的采访
2008-03-18 18:16可能不是很正式。很多题目都用了贝尔的原题。
现在突然想起来,挑两段,不要出一个你看过还不会做的题~
C++/C测试问题
这个问题只是用来考察C++/C程序员的编程基本功。内容仅限于C++/C的常用语法,不涉及数据结。
结构,算法和深奥的语法。考试成绩可以反映考生的编程素质和对C++/C的理解程度,但是
不能体现考生的智力和软件开发能力。
笔试时间90分钟。请认真回答问题,不要小看。
1.请填写BOOL、float和pointer变量与“零值”比较的if语句。(10分)
提示:这里的“零值”可以是0、0.0、FALSE或“空指针”。比如int变量n和“零值”
比较的if语句是:
如果(n == 0)
如果(n!= 0 )
诸如此类。
请写一个比较BOOL标志和“零值”的if语句:
请写一个if语句,比较浮点x和“零值”:
请写一个比较char *p和“零值”的if语句:
二、下面是一个Windows NT下的32位C++程序。请计算sizeof的值(10点)。
char str[]= " Hello ";char * p = strint n = 10;请计算sizeof (str)
= sizeof ( p ) = sizeof ( n ) = void Func(
Char str[100]){请计算sizeof( str) =}
void * p = malloc(100);请计算sizeof (p) =
三、简答题(25分)
1.头文件中的ifndef/define/endif有什么用?
2.#include和# include“filename . h”有什么区别?
3.const有什么用?(请指定至少两个)
4.为什么在C++程序中调用C编译器编译的函数时要加上“C”的声明?
5.请简述以下两种for循环的优缺点。
//第一个for(I = 0;I ing();}//第二个if(条件){ for(I = 0;I for(I = 0;一、优点:缺点:优点:缺点:
四、关于记忆的思考问题(20分)
void get memory(char * p){ p =(char *)malloc(100);}void Test(void) {char *str =
NULLGetMemory(str);strcpy(str,“hello world”);printf(str);}请问,运行测试功能会
结果如何?a:char * get memory(void){ char p[]= " hello world ";返回p;
} void Test(void){ char * str = NULL;str = GetMemory();printf(str);}请运行测试。
函数的结果会是什么?答:
Void GetMemory2(char **p,int num){ * p =(char *)malloc(num);}无效测试(void){c
har * str = NULLGetMemory(& amp;str,100);strcpy(str,“hello”);printf(str);}不好意思。
测试函数的结果会是什么?答:Void test(Void){ char * str =(char *)malloc(1
00);strcpy(str,“hello”);免费(str);if(str!= NULL) { strcpy(str,"
世界”);printf(str);}}如果运行测试函数会怎么样?答:
五、编写strcpy函数(10分)
已知strcpy函数的原型是
char *strcpy(char *strDest,const char * str src);
其中strDest是目标字符串,strSrc是源字符串。
(1)不要调用C++/C的字符串库函数,请编写函数strcpy。
(2)strcpy可以将strSrc的内容复制到strDest,那么为什么需要char *类型的返回值呢?
六、写出字符串的构造函数、析构函数和赋值函数(25分)
已知类字符串的原型是:
类别字符串
{
公共:
string(const char * str = NULL);//普通构造函数
字符串(常量字符串& amp其他);//复制构造函数
~ String(void);//析构函数
弦与弦。operate =(常量字符串& amp其他);//赋值函数
私人:
char * m _ data//用于保存字符串。
};
请写出String的上述四个函数。