`

C++测试题

阅读更多

C++测试题

1. 以下三条输出语句分别输出什么?[C易]

char str1[] = "abc";

char str2[] = "abc";

const char str3[] = "abc";

const char str4[] = "abc";

const char* str5 = "abc";

const char* str6 = "abc";

cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?

cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?

cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?

2. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]

答:

a. class B : public A { ……} // B公有继承自A,可以是间接继承的

b. class B { operator A( ); } // B实现了隐式转化为A的转化

c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数

d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个

3. 以下代码中的两个sizeof用法有问题吗?[C易]

void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母

{

for( size_t i=0; i
if( 'a'<=str[i] && str[i]<='z' )

str[i] -= ('a'-'A' );

}

char str[] = "aBcDe";

cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;

UpperCase( str );

cout << str << endl;

4. 以下代码有什么问题?[C难]

void char2Hex( char c ) // 将字符以16进制表示

{

char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);

char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);

cout << ch << cl << ' ';

}

char str[] = "I love 中国";

for( size_t i=0; i
char2Hex( str[i] );

cout << endl;

5. 以下代码有什么问题?[C++易]

struct Test

{

Test( int ) {}

Test() {}

void fun() {}

};

void main( void )

{

Test a(1);

a.fun();

Test b();

b.fun();

}

6. 以下代码有什么问题?[C++易]

cout << (true?1:"1") << endl;

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

unsigned int const size1 = 2;

char str1[ size1 ];

unsigned int temp = 0;

cin >> temp;

unsigned int const size2 = temp;

char str2[ size2 ];

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

struct CLS

{

int m_i;

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

CLS()

{

CLS(0);

}

};

CLS obj;

cout << obj.m_i << endl;

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

答:

class Empty

{

public:

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

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

~Empty(); // 析构函数

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

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

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

};

10. 以下两条输出语句分别输出什么?[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; // 输出什么?

11. 以下反向遍历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;

}

12. 以下代码有什么问题?[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 );

}

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

答:

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++测试题

笔试时间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 ) =

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编译器编译后的函数,为什么要加 extern “C”声明?

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

// 第一个

for (i=0; i++;)

{

if (condition)

DoSomething();

else

DoOtherthing();

}

// 第二个

if (condition)

{

for (i=0; i++;)

DoSomething();

}

else

{

for (i=0; 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个函数。

分享到:
评论

相关推荐

    c++测试题(含答案)

    C++测试题知识点整理 一、C++程序的基本结构 在每个C++程序中都必须包含有一个函数,该函数名为main,该函数是程序的入口点。main函数是C++程序的起点,它是操作系统调用的入口点。 二、类的构造函数 在C++中,...

    C++测试题整理

    总的来说,这份"C++测试题整理"资料对于C++初学者和进阶者都极具价值。它能帮助学习者检验自己的编程水平,找出知识盲点,进而有针对性地进行学习和提升。无论是在学术考试还是实际工作中,熟悉并掌握这些知识点都是...

    C++测试题.html

    C++测试题.html

    C++测试题(含答案).pdf

    在C++编程语言的学习中...以上就是C++测试题中涉及的关键知识点的详细解析,涵盖了程序结构、类与对象、运算符重载、STL容器和算法、数据类型、继承、控制流等多个方面。学习和理解这些知识点对于掌握C++编程至关重要。

    4399网页游戏面试C++测试题.docx

    在这些4399网页游戏面试的C++测试题中,我们可以提炼出多个关于C++编程语言的关键知识点: 1. **动态内存分配与指针**: - 题目1涉及了`malloc()`和`strcpy()`函数。C++允许在运行时动态分配内存,但直接将动态...

    C++测试题及参考答案

    2. **软件的开发过程**:通常包括需求分析、设计、编码、测试和维护等多个阶段。这一过程确保了软件产品的质量与稳定性。 3. **程序设计**:是创建可执行程序的过程,涉及算法的设计、数据结构的选择以及代码的...

    慧通教育C++测试题 103263-103267(5题)-2024.10.08.pdf

    慧通教育C++测试题 103263--103267(5题)--2024.10.08

    4399网页游戏面试C++测试题.pdf

    面试中,C++的测试题通常会涵盖语言的基础、内存管理、指针操作、字符串处理、类与对象以及标准库的使用等多个方面。以下是对这些题目进行的详细解析: 1. 代码执行的结果是什么? ```cpp void avoidmain(){} // ...

    C++测试题及答案

    根据给定文件的信息,我们可以总结出以下相关的C++知识点: ### C++程序开发流程 - **编辑**: 使用文本编辑器或IDE(集成开发环境)编写C++源代码,并保存为`.cpp`文件。 - **编译**: 使用编译器(如g++、clang++...

    C++测试题练习题word版本

    在这个测试题中,我们被要求创建一个形状类`Shape`的派生类,包括`Circle`(圆)、`Triangle`(三角形)和`Rectangle`(矩形),并且需要重写基类中的成员函数以返回正确的几何特性,如面积和周长,并且展示对象的基本信息...

    C++测试题库1

    一般将类的析构函数设置为纯虚函数即可将这个类定义为抽象类,抽象类中至少有一个纯虚函数(虚函数是指一个类中你希望重写的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际...

    公司内部C++测试题

    最后,代码中还包含了一个循环结构,用于遍历并测试特定条件。循环变量`i`从5开始,每次增加5,直到达到1000,同时检查`m`除以5后是否还能被5整除。这涉及到对循环、条件语句以及算术运算的理解。 以上就是从给定的...

    C++测试题大全.docx

    4. **C++访问权限**:在C++中,默认的类成员访问权限是`private`,这意味着默认情况下,类的成员只能在类内部访问。 5. **输入输出函数**:C++中,`scanf`函数用于从键盘读取单个字符或数据。 6. **循环语句**:`...

    C++测试题(含答案).docx

    这些题目涉及了C++语言的基础知识,包括程序结构、类与对象、运算符重载、虚函数、STL容器、泛型算法、数据类型、继承方式、关键字作用以及控制流语句。...通过解决这些练习题,可以帮助巩固理论知识,并提升编程技能。

    C++面试题笔试题C++ 数据结构算法笔试题资料合集.zip

    C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....

    C++题库非常好的内部练习题(答案)

    C++题库非常好的内部练习题(答案) 以下是从给定的文件中生成的相关知识点: 1. C++变量赋值:在C++中,左侧必须是一个有效的左值,否则编译器将报错。例如,`a = 10`是正确的,但`左侧不是一个有效的左值,例如`...

    华为C++笔试题及答案(只有一个试卷的)

    【标题】"华为C++笔试题及答案"涵盖了华为公司在招聘过程中对C++编程技能的考核要点,这类题目通常用于评估应聘者的基础编程能力、问题解决能力和对C++特性的理解程度。C++是一种强大的、面向对象的编程语言,广泛...

Global site tag (gtag.js) - Google Analytics