時間: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;
}