2013搜狗校园招聘笔试题

第一题:以下程序的输出是___________________

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(){Base* pb = new Child(1);pb->func1();

cout<<pb->getValue()<<endl;delete pb;

return 0;}

此题输出:12.(在非虚函数中调用虚函数,将调用实际的虚函数)

第三题:以下程序的输出是___________________

int main(){char num;for(num = 0;num < 255;) num += num;

cout<<num<<endl;

return 0;}

此题是死循环,无输出。(for循环中将num赋值为0了,在for循环上面是一个随机的值。所以num+num还是0,此题说明无论在什么情况下一定要坚持自己的判断)。

第四题:程序出错在什么阶段:

#includeusing namespace std;

int main(){cout<<“welcome to linuxidc”<<endl;

return 0;}

A:编译时;B:运行时;C:编译和运行时都出错;D程序运行正常

选D。因为中//后面是注释,前面是标签(类似goto的标签)。(坑爹啊)

第五题:下面程序的执行结果是【说明:x86_64环境】(*间接访问的优先级大于-)

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];

cout<<*(*(a + 1) – 1)<<” “<<*(*(p1 + 3) – 2) + 1 <<” “<<*(*(p2 – 1) + 16) + 2<<” ” <<*(p3 + sizeof(p1) – 3)<<endl;

输出结果为:4 1101 13002 2。

p1为指向一维数组的指针,所以a + 1指向{50,60,70,80}这一维的地址。减一则为4的地址;同理第二个输出1101。同理,由于数组的列是4,,所以*(p2 – 1) + 16就相当于*(p2) + 12,所以第三个输出13002。

第四个由于p1是指针,所以sizeof(p1)为4,所以第四个输出2。

千万个不眠的夜里,你一直让我感动,只是因为相信有个人会爱我一生一世。

2013搜狗校园招聘笔试题

相关文章:

你感兴趣的文章:

标签云: