百度---2011年校园招聘笔试题 C++类题目

一、选择题

1.下列关于对象初始化的叙述中,正确的是
  A 定义对象的时候不能对对象进行初始化
  B 定义对象之后可以显式地调用构造函数进行初始化
  C 定义对象时将自动调用构造函数进行初始化
  D 在一个类中必须显式地定义构造函数实现初始化

2.下列关于基类和派生类关系的叙述中,正确的是
  A 每个类最多只能有一个直接基类
  B 派生类中的成员可以访问基类中的任何成员
  C 基类的构造函数必须在派生类的构造函数体中调用
  D 派生类除了继承基类的成员,还可以定义新的成员

3.下列关于赋值运算符“=”重载的叙述中,正确的是
  A 赋值运算符只能作为类的成员函数重载
  B 默认的赋值运算符实现了“深层复制”功能
  C 重载的赋值运算符函数有两个本类对象作为形参
  D 如果己经定义了复制(拷贝 构造函数,就不能重载赋值运算符

4.下列选项中,正确的C++标识符是
  A6_group   B group~6   C age+3   D_group_6
5. 下列循环语句中有语法错误的是
  A int i;for( i=1;i<10;i++)cout<<‘*‘;
  B int i,j;for(i=1,j=0;i<10;i++,j++)cout<<‘*‘;
  C int i=0;for(;i<10;i++)cout<<‘*‘;
  D for(1)cout<<‘*‘;

6. 下列定义语句中,错误的是
  A intpx*;   B char*acp[10];   Cchar(*pac)[10];  D int(*p)();
7. 若MyClass为一个类,执行“MyClass a[4],*p[5];”语句时会自动调用该类构造函数的次数是
  A2 B5 C4 D 9
8. 有如下程序:
  #include<iostream>
  #include<cmath>
  usingstd::cout;
  classPoint{
  public:
  frienddouble distance(const Point &p); //p距原点的距离
  Point(int xx=0,int yy=0):x (xx),Y(YY){}//①
  private:
  Int x,Y;  };
  doubledistance(const Point &p) { //②
  returnsqrt(p.x*p.x+p.Y*p.Y);  }
  int main(){
  Point p1(3,4);
  cout<<distance(p1); //③
  return 0;  }  下列叙述中正确的是
  A 程序编译正确   B 程序编译时语句①出错

  C 程序编译时语句②出错   D程序编译时语句③出错

9. 下列哪两个是等同的 

int b;
   const int *a =&b;    ‚ const * int a = &b;
  ƒ const int*const a = &b;   „ int const* const a = &b; 

A „ B ‚ C ƒ„ ` D ‚ƒ

10. 有如下语句序列:
  charstr[10];cin>>str;
  当从键盘输入”I lovethis game”时,str中的字符串是
  A"I love this game"  B "I love thi"   C"I love"   D "I"
11. 有函数模板声明和一些变量定义如下:
  template<class Tl,class T2,class T3>T1 sum(T2,T3);
  doubledl,d2;

  则下列调用中,错误的是

  Asum<double,double,double>(dl,d2);  B sum<double;double>(d1,d2);
  Csum<double>(d1,d2);   D sum(d1,d2);

12. 以下程序段完全正确的是
  A int*p; scanf("%d",&p);   B int *p; scanf(“%d”,p);
  C int k,*p=&k; scanf("%d",p);   D int k,*p:; *p= &k; scanf(“%d”,p);

13. 有定义语句:int *p[4];以下选项中与此语句等价的是
  Aint p[4];   B int **p;   C int *(p「4」);   Dint (*p)「4」;
14. 若要重载+、=、<<、=和[]运算符,则必须作为类成员重载的运算符是
  A +和=   B =和<<   C ==和<<   D =和[]
15. 下列说法正确的是( )
  A 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
  B 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
  C 类的内联函数必须在类体内定义
  D 类的内联函数必须在类体外通过加关键字inline定义

16. 下面对于友元函数描述正确的是( )
  A 友元函数的实现必须在类的内部定义
  B 友元函数是类的成员函数
  C 友元函数破坏了类的封装性和隐藏性
  D 友元函数不能访问类的私有成员

17. 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )
  A 派生类的对象可以赋给基类的对象
  B 派生类的对象可以初始化基类的引用
  C 派生类的对象可以直接访问基类中的成员
  D 派生类的对象的地址可以赋给指向基类的指针

18. 下列关于多态性的描述,错误的是( )
  A C++语言的多态性分为编译时的多态性和运行时的多态性
  B 编译时的多态性可通过函数重载实现
  C 运行时的多态性可通过模板和虚函数实现
  D 实现运行时多态性的机制称为动态绑定

19. 如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( )
A 一元运算符 B二元运算符 C 选项A 和选项B 都可能 D 重载错误
20. 在下列关于C++函数的叙述中,正确的是( ) 

A 每个函数至少要有一个参数 B 每个函数都必须返回一个值 

C 函数在被调用之前必须先声明 D 函数不能自己调用自己

21. 如果进栈序列为el,e2,e3,e4,则可能的出栈序列是 ( )
  A e3,el,e4,e2   B e2,e4,e3,el    C e3,e4,e1,e2  D 任意顺序
22. 下面关于模板的描述,错误的是 ( )
  A 函数模板和类模板的参数可以是任意的数据类型
  B 类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象
  C 函数模板不能直接使用,需要实例化为模板函数后才能使用
  D 类模板的成员函数都是模板函数

23. 下面对静态数据成员的描述中,正确的是( )
  A 静态数据成员可以在类体内进行初始化
  B 静态数据成员不可以被类的对象调用
  C 静态数据成员不能受private控制符的作用
  D 静态数据成员可以直接用类名调用

24. 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
  A 公有类型    B私有类型    C 保护类型    D友元类型
25.抽象基类是指( )

A 嵌套类    B 派生类  C含有纯虚函数 D 多继承类

26.如果已定义了一个C++类CMyList并有以下语句:

CMyList list(3);

以下说法正确的是()。

A 该语句会创建一个CMyList类的一个对象; 

B 该语句会创建一个CMyList类的3个对象;

C 必须为类CMyList定义一个构造函数; 

D 必须为类CMyList定义一个析构函数;

E 必须定义函数CMyListlist(int);

27. 以下说法正确的是( )。

A内联(inline)函数改善了函数调用的执行效率。

B类A的友元(friend)函数可以访问类A的私有成员。

C类A的友元(friend)类B可以访问类A的私有成员。

D类A的静态数据成员为类A的所有对象所共享。

E类A的静态成员函数没有传递this 指针作为参数。

28.类B从类A派生,则类B可以访问类A中的( )成员。

A public成员 B private成员 Cprotected成员 D数据成员   E函数成员

29. 面向对象的程序设计语言具有()等共同特性。

A封装性 B多态性 C简单性 D复杂性 E继承性

30. 现有一个程序如下:

#i nclude

class A

{ public:
void f(){ cout<< “A::f()”;}
};

class B

{ public:
void f(){ cout<< “B:f()”;}void g(){ cout<< “B:g()”;}
};

class C : public A, public B

{ public:
void g(){cout<<”C::g()”;}
void h()
{cout<<”C::h()”;
f(); //语句1

}

};

void main()

{ C obj;

obj.f();    //语句2

obj.A::f();//语句3

obj.B::f();//语句4

obj.g();   //语句5

}

则编译时会产生错误的语句有()

A语句1     B语句2   C语句3 D语句4    E语句5

二、 填空题

1. int func(x)

{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
} 

假定x = 9999。 函数的运行结果为_____

2. 一个栈的初始状态为空。首先将元素5,4,3,2,1 依次入栈,然后退栈一次,再将元素A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为_______________。

3. 一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有个_____结点。

4. 一个双目运算符作为类的成员函数重载时,重载函数的参数表中有_ _个参数。

5. #defineDOUBLE(x) x+x ,i= 5*DOUBLE(5); i的值为_ _。

6. switch()中不允许的数据类型是____。

7. 某32位系统下, C++程序void *p = malloc( 100 ); sizeof (p) = ____。

8. int a = 4;(++a) += a;执行后a的值为___。

9. 派生类中的成员函数可以直接访问基类中的公有成员和____成员。

10. C++语言的参数传递机制包括传值和________两种。

三、 阅读题

1.写出函数Test的运行结果

voidTest(void){

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

strcpy(str,“hello”);

free(str);

if(str!= NULL){

strcpy(str,“world”);

printf(str);

}

}

2.写出程序的运行结果

#include<iostream>
  using namespace std;
  class Base{
  Int x;
  Public:
  Base(int b):x(b){}
  virtual void display(){cout<<x;}

  };

  class Derived:public Base{
  Int y;
  public:
  Derived(int d):Base(d),y(d){}
  void display(){cout<<y;}  };
  int main(){
  Base b(1);Derived d(2);
  Base*p=&d;
  b .display();d.display();p一>display();
  return 0;

  }

3.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正
int add_n(int n) { static int i=100; i+=n; return i;
}

4.i最后等于多少?
int i = 1;int j = i++;
if((i>j++) && (i++ == j)) i+=j;

5.#include…

constint SIZE=10;

classstack

{char stck[SIZE];

inttop;

public:

voidinit();

voidpush(char ch);

charpop();

};

voidstack::init()

{top=0; }

voidstack:push(char ch)

{if(top==SIZE)

 { cout<<”Stack is full.\n”;

return ; }

stck[top++]=ch;

}

charstack:pop()

{if(top==0)

   { cout<<”Stack is empty.\n”;

   return 0;}

return stck[--top];

}

voidmain()

{stack s1, s2;

 s1.init();

 s2.init();

 s1.push(‘a’);

 s1.push(‘b’);

 s1.push(‘c’);

 s2.push(‘x’);

 s2.push(‘y’);

 s2.push(‘z’);

 for(int i=0; i<3; i++)
cout<<”Pop s1:”<< s1.pop();
 for(i=0; i<3; i++)

cout<<”Pop s2:”<< s2.pop();

}

四、附加题: 

写一个Singleton。Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

你可能感兴趣的:(C++,c,百度,招聘,Class,iostream)