搜狗2012.9.23校园招聘会笔试题

字体大小: 中小 标准 ->行高大小: 标准

C/C++类

1、以下程序的输出是(12)

  1. class Base  { 
  2. public:      Base(int j) : i(j) {  }   
  3.     virtual ~Base() {  }      void func1() 
  4.     {          i *= 10; 
  5.         func2();      } 
  6.     int getValue()      { 
  7.         return i;      } 
  8. protected:      virtual void func2() 
  9.     {          i++; 
  10.     }  protected
  11.     int i;  }; 
  12.   class Child : public Base 
  13. public
  14.     Child(int j) : Base(j) {  }      void func1() 
  15.     {          i *= 100; 
  16.         func2();      } 
  17. protected:      void func2() 
  18.     {          i += 2; 
  19.     }  }; 
  20.   int main(void
  21. {      Base *pb = new Child(1); 
  22.     pb->func1();      cout<<pb->getValue()<<endl; 
  23.     delete pb;       
  24.     return 0;  } 

2、请问程序的输出结果是(30)
#define DOUBLE(x) x+x // x*2
int i = DOUBLE(5)*5;
cout<<i<<endl;
3、写出一下程序的输出(死循环)

  1. int main(void)  { 
  2.     char num;      for(num = 0; num < 255; ) 
  3.         num += num;      printf("%d\n",num); 
  4.     return 0;  } 

4、程序出错在什么阶段?()

  1. int main(void)  { 
  2.     http://www.sogou.com       cout<<"welcome to sogou"<<endl; 
  3.           return 0; 

A、编译阶段出错    B、运行阶段出错    C、编译和运行都出错    D、程序运行正常
因为http://www.sogou.com中//后面是注释,前面的http:是标签(类似于goto语句中的标签)。(这个题目碉堡了)

5、下面程序执行结果为【说明:X86_64环境】(D)

  1. int main(void)  { 
  2.     int a[4][4] = {                    {1,2,3,4}, 
  3.                   {50,60,70,80},                    {900,1000,1100,1200}, 
  4.                   {13000,14000,15000,16000} };      int (*p1)[4] = a; 
  5.     int (*p2)[4] = &a[0];      int *p3 = &a[0][0]; 
  6.     printf("%d %d %d %d\n",*(*(a+1)-1),*(*(p1+3)-2)+1,*(*(p2-1)+16)+2,*(p3+sizeof(p1)-3));       
  7.     return 0;  } 

A、16000 1101  13002 2
B、4  2  3  60
C、16000  2  3  2
D、4  1101  13002  60
p1为指向一维数组的指针,所以a + 1指向{50,60,70,80}这一维的地址。减一则为4的地址;同理第二个输出1101。同理,由于数组的列是4,所以*(p2 - 1) + 16就相当于*(p2) + 12,所以第三个输出13002。
第四个由于p1是指针,所以sizeof(p1)为8(68位的系统),所以第四个输出60。

6、在32位操作系统gcc编译器环境下,下面的程序的运行结果是(A)

  1. class A  { 
  2. public:      int b; 
  3.     char c;      virtual void print() 
  4.     {          cout<<"this is father's function!"<<endl; 
  5.     }  }; 
  6.   class B : A 
  7. public
  8.     virtual void print()      { 
  9.         cout<<"this is children's function!"<<endl;      } 
  10. };  int main(void
  11. {      cout<<sizeof(A)<<"  "<<sizeof(A)<<endl; 
  12.           return 0; 

A、12  12
B、8  8
C、9  9
D、12  16
7、以下哪些做法是不正确或者应该极力避免的:【多选】(ACD)
A、构造函数声明为虚函数
B、派生关系中的基类析构函数声明为虚函数
C、构造函数调用虚函数
D、析构函数调用虚函数

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/64968.html