2013搜狗校园招聘笔试题
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,此题说明无论在什么情况下一定要坚持自己的判断)。
第四题:程序出错在什么阶段:
#include
using namespace std;
int main()
{
http://www.bkjia.com
cout<<"welcome to bkjia"<<endl;
return 0;
}
A:编译时;B:运行时;C:编译和运行时都出错;D程序运行正常
选D。因为http://www.bkjia.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。
|
评论暂时关闭