找工作笔试面试那些事儿(7)---测试题答案
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。
提示:这里“零值”可以是0 , 0.0 , FALSE 或者“空指针”。例如 int 变量 n 与“零值”
比较的 if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。
请写出 BOOL flag 与“零值”比较的 if 语句:
if ( flag )
if ( !flag )
请写出 float x 与“零值”比较的 if 语句:
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON)
不可将浮点变量用“==”或“!= ”与数字比较,应该设法转化成“>=”或“ <=”此类形式
请写出 char *p 与“零值”比较的 if 语句:
if (p == NULL)
if (p != NULL)
二、以下为Windows XP 下的32位C++ 程序,请计算size of 的值
// String 的析构函数 String : : ~String(void) { delete [] m_data; // 由于m_data是内部数据类型,也可以写成 delete m_data; }// String 的普通构造函数 String : : String(const char *str) // 6 分 { if(str==NULL) { m_data = new char[1]; // 若能加 NULL 判断则更好 *m_data = ‘ \ 0 ’ ; } else { int length = strlen(str); m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, str); } } // 拷贝构造函数 String::String(const String &other) // 3 分 { int length = strlen(other.m_data); m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, other.m_data); } // 赋值函数 String & String::operate =(const String &other) // 13分 { // (1) 检查自赋值 // 4 分 if(this == &other) return *this; // (2) 释放原有的内存资源 // 3 分 delete [] m_data; // (3 )分配新的内存资源,并复制内容 // 3 分 int length = strlen(other.m_data); m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, other.m_data); // (4 )返回本对象的引用 // 3 分 return *this; }