最近天天就是一個(gè)忙,忙著(zhù)工作,忙著(zhù)鍛煉身體,忙著(zhù)學(xué)習PHP。
前段時(shí)間,看到有些學(xué)員到神州數碼面試軟件測試工程師,其中有幾道C題目把學(xué)員難倒了。呵呵,因為本人是教C語(yǔ)言的。所以給這位學(xué)員做了下解答。
1.
void fun(void)
{
int count=0;
int m=9999;
while(m)
{
count++;
m=m&(m-1);
}
printf(count);
}
這道題目考察的是10進(jìn)制到2進(jìn)制的轉換以及按位與運算。9999轉換成2進(jìn)制為:
10011100001111
打印的count應該是8。
這個(gè)count的值與9999化成2進(jìn)制時(shí)1的個(gè)數有關(guān),9999中2進(jìn)制有8個(gè)1。所以count的值是8.
這個(gè)題目考察的知識點(diǎn)在DC課堂上都重點(diǎn)講過(guò),所以不會(huì )應該是自己的責任。
2.在雙向鏈表存儲結構中,刪除p所指的結點(diǎn)時(shí)須修改指針
A:(p->llink)->rlink=p->rlink;
(p->rlink)->llink=p->llink;
B:p->llink=(p->llink)->llink;
(p->llink)->rlink=p
C:
(p->rlink)->llink=p
p->rlink=(p->rlink)->rlink
D:
p->rlink=(p->llink)->llink;
p->llink=(p->rlink)->rlink;
這個(gè)題目應該選A
在我們的DC課堂上對與單向鏈表以及其上的操作都講了,雙向鏈表沒(méi)有講。但如果單向鏈表會(huì ),雙向也可以推理出來(lái),何況這是個(gè)選擇題目。
如果這個(gè)沒(méi)做對,情有可原。但是如果下次再做錯,自己就要好好想想了。
3.定義一個(gè)結構體:
完成由Node類(lèi)型結點(diǎn)構成的一個(gè)單向鏈表的正向排序(由小到大)
#include<stdio.h>
#include<malloc.h>
struct Node
{
struct Node *next;
int value;
};
struct Node* InsertSort(void)
{
struct Node *Head=NULL,*New,*Cur,*Pre;
int i;
for(i=0;i<5;i++)
{
if((New=(struct Node*)malloc(sizeof(struct Node)))==NULL)
{
printf("申請空間失敗\n");
return NULL;
}
printf("請輸入節點(diǎn)的value\n");
scanf("%d",&New->value);
New->next=NULL;
if(Head==NULL)
{
Head=New;
continue;
}
if(New->value<=Head->value)
{//head之前插入節點(diǎn)
New->next=Head;
Head=New;
continue;
}
Cur=Head;
while(New->value>Cur->value && Cur->next!=NULL)
{
Pre=Cur;
Cur=Cur->next;
}
if(Cur->value>=New->value)
{
Pre->next=New;
New->next=Cur;
}
else
//if(Cur!=New)
Cur->next=New;
}//for
return Head;
}
void print(struct Node* Head)
{
struct Node* Cur;
Cur=Head;
while(Cur!=NULL)
{
printf("Cur->value=%d\n",Cur->value);
Cur=Cur->next;
}
}
void main(void)
{
struct Node* head;
head=InsertSort();
print(head);
}
程序已經(jīng)調試通過(guò),大家可以試試。
這個(gè)題目也應該會(huì ),這個(gè)在課堂上要求過(guò)。插入一個(gè)有序單鏈表。
這個(gè)題目只是筆試題,如果寫(xiě)出來(lái)的程序不能完全執行,這個(gè)可以原諒的。
如果大體的程序框架都寫(xiě)不出來(lái),這個(gè)可要自己仔細想想了。
其實(shí)這個(gè)題目我在204班做了試驗,效果也不好。但通過(guò)1堂課的練習,不斷的調試,每個(gè)人還是都寫(xiě)出了可執行的程序。所以學(xué)習程序最重要的是多動(dòng)手啊。