时间:2012-9-17 地点:电子科大
题目:选择,填空,代码补全+行测(智力题,性格测试)
题目倒是不难,各种坑啊。一定要仔细啊。又吃亏了。。
1.下面语句的输出结果:
cout<<strlen("\t\"\065\xff\n");
A、5
B、15
C、8
D、语句不合法
正确答案:A
\065和\xff都是ASCII字符。做题需仔细。
2、请填写下列代码的输出内容
int a,b,c,d;
a=10;
b=a++;
c=++a++;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
正确答案:编译错误
因为前自增和后自增都需要左值。所以++a++这句代码编译错误
3、写一个a个字节对齐的宏正确答案:#pragma pack(a)
4、预处理器标志#error的目的是什么?
正确答案:生成编译错误消息
http://blog.csdn.net/chenghf1979/article/details/5201074
5、动态链接库和静态链接库的区别
http://www.cnblogs.com/Winston/archive/2008/07/05/1236273.html
6、
int *p1=(int *)0x800500;
int *p2=(int *)0x800518;
cout<<p2-p1<<endl;
代码执行结果?
正确答案:6
0x18转换10进制为24.
7、
struct ks
{
int a;
int *b;
}s[4],*p;
int n=1,i;
for(i=0;i<4;i++)
{
s[i].a=n;
s[i].b=&s[i].a;
n+=2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
正确答案:7,3
这道题需要注意printf参数从右边开始压栈
程序填空题:
一道2分查找,一道树的层次遍历
8、链表排序(pps2013校园招聘笔试题)
考试时候,思维短路。知道思想,就是没写出来。
//单链表排序
Node *ListSort(Node *head)
{
if(head==NULL || head->next==NULL)
return head;
Node *p=head->next;
head->next=NULL;
Node *q;
while(p!=NULL)
{
q=p->next;
p->next=NULL;
if(p->data<=head->data)//插入结点小于头结点,直接插入结点next指向头结点,然后将插入节点置为头结点
{
p->next=head;
head=p;
}else
{
Node *temp=head;
while(temp->data<p->data && temp->next!=NULL)//找到第一个比插入节点数字大的节点,或者找到尾节点
temp=temp->next;
if(temp->data>p->data)//第一种情况找到第一个比插入节点数字大的节点
{
//将插入节点放在第一个比插入节点数字大的节点的后面
p->next=temp->next;
temp->next=p;
//交换数据。这里也是经常问到的o(1)下实现在链表某一位置的插入
int t_data=p->data;
p->data=temp->data;
temp->data=t_data;
}else
{
temp->next=p;
}
}
p=q;
}
return head;
}