oppo2013笔试题-不全

时间: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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章