正文 第45章 結構體與共用體7(3 / 3)

b=&a;

2.若有以下定義和語句,則sizeof(a)的值是,sizeof(b)的值是。

unionshare

{inti

floatf;

};

struct{intday;charmonth;intyear;unionsharek;}a,*b;

b=&a;

二、選擇題

1.以下程序的輸出結果是。

unionmyun

{struct

{intx,y,z;}u;

intk;

}a;

main()

{a.u.x=4;a.u.y=5;a.u.z=6;

a.k=0;

printf("%d\n",a.u.x);

A.4B.0C.5D.6

2.若程序中有下麵的說明和定義

structdata

{intx;chary;}a={10,A};

則會發生的情況是。

A.程序將順利編譯、連接、執行

B.編譯出錯

C.能順利通過編譯、連接,但不能執行

D.能順利通過編譯,但連接出錯

3.設有如下定義:

structsk

{inta;floatb;}data,*p;

若有p=&data;,則對data中的a域的正確引用是。

A.(*p).data.aB.(*p).a

C.p->data.aD.p.data.a

4.有以下結構體說明和變量的定義,指針q指向變量b。則不能把結點b鏈接到結點a之後的語句是。

structnode

{chardata;

structnode*next;

}a,b,*p=&a,*q=&b;

A.a.next=q;B.p.next=&b;

C.p->next=&b;D.(*p).next=q;

5.當說明一個共用體變量時係統分配給它的內存是。

A.各成員所需內存量的總和

B.結構體中第一個成員所需內存量

C.成員中占內存量最大者所需的容量

D.結構體中最後一個成員所需內存量

6.C語言結構體類型變量在程序執行期間。

A.所有成員一直駐留在內存中

B.隻有一個成員駐留在內存中

C.部分成員駐留在內存中

D.沒有成員駐留在內存中

三、編程題

1.有5個學生,每個學生的數據包括學號、姓名、3門課程的成績,現要求從鍵盤輸入這5個學生的數據,並在屏幕上輸出每個學生3門課程的平均成績。

2.編寫一個函數creat用來建立一個動態鏈表,其中每個結點包括學號、姓名和年齡。

3.在上題的基礎上,再編寫一個函數delage用來刪除鏈表中的結點。要求輸入一個年齡,從鏈表中刪除與該年齡相同的結點。