C

来源:互联网 发布:星光大道网络直播 编辑:程序博客网 时间:2024/04/26 04:07
//上海贝尔的面试题43分即可进入复试
一、请填写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 ) =                
sizeof ( p ) =               
sizeof ( n ) =void Func ( char str[100])
{
请计算
 sizeof( str ) =  
}
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();
优点:N次中,每次都要对condition进行判断
 缺点: 优点:一次判断condition后,对something或Otherthing执行N次
 缺点:
 
四、有关内存的思考题(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
char *strcpy(char *strDest,const char *strSrc){
          int n=0;
          while(strSrc[n]!=NULL){
               n++:
          }
          *srtDest=new char[n];
          for(int i=0;i<n;i++) {
    strDest=strSrc[i];
              i++;
}
return *strDest;
}      
(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个函数。
原创粉丝点击