搜狗2012.9.23校园招聘会笔试题
搜狗2012.9.23校园招聘会笔试题
C/C++类
1、以下程序的输出是(12)
- class Base
- {
- public:
- Base(int j) : i(j) { }
- virtual ~Base() { }
- void func1()
- {
- i *= 10;
- func2();
- }
- int getValue()
- {
- return i;
- }
- protected:
- virtual void func2()
- {
- i++;
- }
- protected:
- int i;
- };
- class Child : public Base
- {
- public:
- Child(int j) : Base(j) { }
- void func1()
- {
- i *= 100;
- func2();
- }
- protected:
- void func2()
- {
- i += 2;
- }
- };
- int main(void)
- {
- Base *pb = new Child(1);
- pb->func1();
- cout<<pb->getValue()<<endl;
- delete pb;
- return 0;
- }
2、请问程序的输出结果是(30)
#define DOUBLE(x) x+x // x*2
int i = DOUBLE(5)*5;
cout<<i<<endl;
3、写出一下程序的输出(死循环)
- int main(void)
- {
- char num;
- for(num = 0; num < 255; )
- num += num;
- printf("%d\n",num);
- return 0;
- }
4、程序出错在什么阶段?()
- int main(void)
- {
- http://www.sogou.com
- cout<<"welcome to sogou"<<endl;
- return 0;
- }
A、编译阶段出错 B、运行阶段出错 C、编译和运行都出错 D、程序运行正常
因为http://www.sogou.com中//后面是注释,前面的http:是标签(类似于goto语句中的标签)。(这个题目碉堡了)
5、下面程序执行结果为【说明:X86_64环境】(D)
- int main(void)
- {
- int a[4][4] = {
- {1,2,3,4},
- {50,60,70,80},
- {900,1000,1100,1200},
- {13000,14000,15000,16000} };
- int (*p1)[4] = a;
- int (*p2)[4] = &a[0];
- int *p3 = &a[0][0];
- printf("%d %d %d %d\n",*(*(a+1)-1),*(*(p1+3)-2)+1,*(*(p2-1)+16)+2,*(p3+sizeof(p1)-3));
- 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)
- class A
- {
- public:
- int b;
- char c;
- virtual void print()
- {
- cout<<"this is father's function!"<<endl;
- }
- };
- class B : A
- {
- public:
- virtual void print()
- {
- cout<<"this is children's function!"<<endl;
- }
- };
- int main(void)
- {
- cout<<sizeof(A)<<" "<<sizeof(A)<<endl;
- return 0;
- }
A、12 12
B、8 8
C、9 9
D、12 16
7、以下哪些做法是不正确或者应该极力避免的:【多选】(ACD)
A、构造函数声明为虚函数
B、派生关系中的基类析构函数声明为虚函数
C、构造函数调用虚函数
D、析构函数调用虚函数
|
评论暂时关闭