EMC笔试题--2007-04

出自求职百科

跳转到: 导航, 搜索

1。

class a{

public:

 a() {cout<<"a!"<<endl;}

 virtual void disp(){cout<<" a::disp()!"<<endl;}

 virtual ~a(){cout<<"~a!"<<endl;}

};

class b:public a{

public:

 b(){cout<<"b!"<<endl;}

 ~b(){cout<<"~b!"<<endl;}

};

class c:public b{

public:

 c(){cout<<"c!"<<endl;}

 void disp(){cout<<"c::disp()!"<<endl;}

 ~c(){cout<<"~c!"<<endl;}

};

void main()

{

 a *p=new c();

 p->disp();

 delete p;

}

输出结果:

a!

b!

c!

c::disp()!

~c!

~b!

~a!

若a构造函数a()前没有virtual关键字,输出为a::disp()!

若a析构函数~a()前没有virtual关键字,输出为~a!而不是~c!~b!~a!


2。写一个函数 int p(int i, int N);

能够输出i到N再到i,即以参数1,7调用函数,输出结果为

1

2

3

4

5

6

7

6

5

4

3

2

1

要求只用一个语句完成,不允许用?:等n多操作符和关键字。只能用一个printf库函数

  1. include <stdio.h>

int p(int i, int N)

{

  return (printf("%d\n", i))

    && ( i<N

      && (p(i+1, N)

        || (!printf("%d\n", i))));

}

int main(void)

{

  p(1,7);

}

个人工具
公司索引
  • A   B   C   D   E   F   G
  • H   I   J   K   L   M   N
  • O    P
  •     Q    R    S    T
  • U    V    W    X    Y    Z
工具箱