歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 2013搜狗校園招聘筆試題

2013搜狗校園招聘筆試題

日期:2017/2/28 15:30:44   编辑:Linux教程

第一題:以下程序的輸出是___________________

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,此題說明無論在什麼情況下一定要堅持自己的判斷)。

第四題:程序出錯在什麼階段:

#include
using namespace std;

int main()
{
http://www.linuxidc.com
cout<<"welcome to linuxidc"<<endl;

return 0;
}

A:編譯時;B:運行時;C:編譯和運行時都出錯;D程序運行正常

選D。因為http://www.linuxidc.com中//後面是注釋,前面是標簽(類似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。

Copyright © Linux教程網 All Rights Reserved