今天参加了晨星的笔试,好多细节都忘了,主要是写出来给自己复习复习,倒也不难,但也没有做对……..
1、关于数组的指针
一般都会给数组名取地址p在+1,然后求p-1指向的值
可是今天的题是这样的
这是填空题,让求p[1]是多少,emmm…….(当时没反应过来)
p是个一级指针,指向3,p++后指向5,p[1]相当于给p++后解引用,所以是6。
2、#define宏替换的题目(混合~取反运算符)
考点主要有:
(1)、宏替换,细心就行
(2)、运算符的优先级,~的优先级高于,的优先级高于+-
(3)、~取反运算,负数的二进制运算,符号位不变,取反+1,就能得到答案
3、继承与多态
class A
{
public:
virtual void func(int num = 10)
{
cout<<"A::func"<<num<<endl;
}
};
class B
{
public:
virtual void func(int num = 20)
{
cout<<"B::func"<<num<<endl;
}
};
int main()
{
A a;
B b;
B* p = &b;
a.func();
p->func();
}
4、单链表逆置
void Reverse(List head)
{
if(head == NULL || head->next == NULL || head->next->next== NULL)
{
;
}
Node *p = head->next;
Node *q = p->next;
Node *s;
while(q!=NULL)
{
s = q->next;
q->next = p;
q = p;
p = q;
}
head->next = p;
}
5、编程求1+1/2-1/3+1/4-1/5……..
这题应该问题不大,但需要注意值返回值得是double,并且分数应该这样写1.0/i
6、编程打印1000以内的所有完数,比如:6 = 1+2+3;