设为首页 加入收藏

TOP

C++开发工程师面试题库 50~100道(四)
2014-11-23 19:10:58 来源: 作者: 【 】 浏览:60
Tags:开发 工程师 试题库 100
[C++易]


cout << (true 1:”1″) << endl;




89. 以下代码能够编译通过吗,为什么?[C++易]



unsigned int const size1 = 2;


char str1[ size1 ];


unsigned int temp = 0;


cin >> temp;


unsigned int const size2 = temp;


char str2[ size2 ];



90. 以下代码中的输出语句输出0吗,为什么?[C++易]



struct CLS


{


int m_i;


CLS( int i ) : m_i(i) {}


CLS()


{


CLS(0);


}


};


CLS obj;


cout << obj.m_i << endl;




91. C++中的空类,默认产生哪些类成员函数?[C++易]



答:


class Empty


{


public:


Empty(); // 缺省构造函数


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


~Empty(); // 析构函数


Empty& operator=( const Empty& ); // 赋值运算符


Empty* operator&(); // 取址运算符


const Empty* operator&() const; // 取址运算符 const


};




92. 以下两条输出语句分别输出什么?[C++难]



float a =1.0f;


cout << (int)a << endl;


cout << (int&)a << endl;


cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?


float b =0.0f;


cout << (int)b << endl;


cout << (int&)b << endl;


cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?



93. 以下反向遍历array数组的方法有什么错误?[STL易]


vector array;


array.push_back( 1 );


array.push_back( 2 );


array.push_back( 3 );


for( vector::size_type i=array.size()-1; i>=0; –i ) // 反向遍历array数组


{


cout << array[i] << endl;


}




94. 以下代码有什么问题?[STL易]


typedef vector IntArray;


IntArray array;


array.push_back( 1 );


array.push_back( 2 );


array.push_back( 2 );


array.push_back( 3 );


// 删除array数组中所有的2


for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )


{


if( 2 == *itor ) array.erase( itor );


}



95. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]



答:



void* mymemcpy( void *dest, const void *src, size_t count )


{


char* pdest = static_cast( dest );


const char* psrc = static_cast( src );


if( pdest>psrc && pdest

{


for( size_t i=count-1; i!=-1; –i )


pdest[i] = psrc[i];


}


else


{


for( size_t i=0; i

pdest[i] = psrc[i];


}


return dest;


}



int main( void )


{


char str[] = “0123456789″;


mymemcpy( str+1, str+0, 9 );


cout << str << endl;


system( “Pause” );


return 0;


}



华为C/C++笔试题(附答案)2008年02月15日星期五 18:001.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)


96.int a = 4;


(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);


a =


答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;


改后答案依次为9,10,10,11



97.某32位系统下, C++程序,请计算sizeof 的值(5分).


char str[] = “http://www.ibegroup.com/”


char *p = str ;


int n = 10;


请计算


sizeof (str ) = ?(1)


sizeof ( p ) = ?(2)


sizeof ( n ) = ?(3)


void Foo ( char str[100]){


请计算


sizeof( str ) = ?(4)


}


void *p = malloc( 100 );


请计算


sizeof ( p ) = ?(5)


答:(1)17 (2)4 (3) 4 (4)4 (5)4



98. 回答下面的问题. (4分)


(1).头文件中的 ifndef/define/endif 干什么用?预处理


答:防止头文件被重复引用


(2). #i nclude 和 #i nclude “filename.h” 有什么区别?


答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。


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


答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern “C”修饰的变


量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调


用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。


(4). switch()中不允许的数据类型是


答:实型



99. 回答下面的问题(6分)


(1).Void GetMemory(char **p, int num){


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


}


void Test(void){


char *str = NULL;


GetMemory(&str, 100);


strcpy(str, “hello”);


printf(str);


}


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


答:输出“hello”


(2). void Test(void){


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


strcpy(str, “hello”);


free(str);


if(str != NULL){


strcpy(str, “world”);


printf(str);


}


}


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


答:输出“world”



100. char *GetMemory(void){


char p[] = “hello world”;


return p;


}


void Test(void){


char *str = NULL;


str = GetMemory();


printf(str);


}


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


答:无效的指针,输出不确定


首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2013百度校园招聘笔试 下一篇oracle面试sql

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: