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++程序中都必须包含有一个函数,该函数名为main,该函数是程序的入口点。main函数是C++程序的起点,它是操作系统调用的入口点。 二、类的构造函数 在C++中,...
总的来说,这份"C++测试题整理"资料对于C++初学者和进阶者都极具价值。它能帮助学习者检验自己的编程水平,找出知识盲点,进而有针对性地进行学习和提升。无论是在学术考试还是实际工作中,熟悉并掌握这些知识点都是...
C++测试题.html
在C++编程语言的学习中...以上就是C++测试题中涉及的关键知识点的详细解析,涵盖了程序结构、类与对象、运算符重载、STL容器和算法、数据类型、继承、控制流等多个方面。学习和理解这些知识点对于掌握C++编程至关重要。
在这些4399网页游戏面试的C++测试题中,我们可以提炼出多个关于C++编程语言的关键知识点: 1. **动态内存分配与指针**: - 题目1涉及了`malloc()`和`strcpy()`函数。C++允许在运行时动态分配内存,但直接将动态...
2. **软件的开发过程**:通常包括需求分析、设计、编码、测试和维护等多个阶段。这一过程确保了软件产品的质量与稳定性。 3. **程序设计**:是创建可执行程序的过程,涉及算法的设计、数据结构的选择以及代码的...
慧通教育C++测试题 103263--103267(5题)--2024.10.08
面试中,C++的测试题通常会涵盖语言的基础、内存管理、指针操作、字符串处理、类与对象以及标准库的使用等多个方面。以下是对这些题目进行的详细解析: 1. 代码执行的结果是什么? ```cpp void avoidmain(){} // ...
根据给定文件的信息,我们可以总结出以下相关的C++知识点: ### C++程序开发流程 - **编辑**: 使用文本编辑器或IDE(集成开发环境)编写C++源代码,并保存为`.cpp`文件。 - **编译**: 使用编译器(如g++、clang++...
在这个测试题中,我们被要求创建一个形状类`Shape`的派生类,包括`Circle`(圆)、`Triangle`(三角形)和`Rectangle`(矩形),并且需要重写基类中的成员函数以返回正确的几何特性,如面积和周长,并且展示对象的基本信息...
一般将类的析构函数设置为纯虚函数即可将这个类定义为抽象类,抽象类中至少有一个纯虚函数(虚函数是指一个类中你希望重写的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际...
最后,代码中还包含了一个循环结构,用于遍历并测试特定条件。循环变量`i`从5开始,每次增加5,直到达到1000,同时检查`m`除以5后是否还能被5整除。这涉及到对循环、条件语句以及算术运算的理解。 以上就是从给定的...
4. **C++访问权限**:在C++中,默认的类成员访问权限是`private`,这意味着默认情况下,类的成员只能在类内部访问。 5. **输入输出函数**:C++中,`scanf`函数用于从键盘读取单个字符或数据。 6. **循环语句**:`...
这些题目涉及了C++语言的基础知识,包括程序结构、类与对象、运算符重载、虚函数、STL容器、泛型算法、数据类型、继承方式、关键字作用以及控制流语句。...通过解决这些练习题,可以帮助巩固理论知识,并提升编程技能。
C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....
C++题库非常好的内部练习题(答案) 以下是从给定的文件中生成的相关知识点: 1. C++变量赋值:在C++中,左侧必须是一个有效的左值,否则编译器将报错。例如,`a = 10`是正确的,但`左侧不是一个有效的左值,例如`...
【标题】"华为C++笔试题及答案"涵盖了华为公司在招聘过程中对C++编程技能的考核要点,这类题目通常用于评估应聘者的基础编程能力、问题解决能力和对C++特性的理解程度。C++是一种强大的、面向对象的编程语言,广泛...