第 11 章自訂結構 簡單 1 已有以下定義和語法, 則值為 210 的表述式是 struct ks { int a; int *b; ; main ( ) { int x0[ ]={110,120, x1[ ]={210,220; struct ks *p, x[ ]={100,x0,200,x1; p=x; A. *p->b B. (++p)->a C. *(++p)->b D. *(p++)->b 2 以下程式輸出的是 main( ) { struct cmplx { int x; int y; cnum[2]={1,3,2,7; printf( %d\n, cnum[0].y/cnum[0].x*cnum[1].x); A. 0 B. 1 C. 3 D. 6 3 根據以下定義, 能輸出字母 M 的語法是 struct person {char name[9]; int age;; struct person class[10]={ Johu, 17, Paul, 19, Mary, 18, Adam, 16, ; A. printf( %c\n, class[3].name); B. printf( %c\n, class[3].name[1]); C. printf( %c\n, class[2].name[1]); D. printf( %c\n, class[2].name[0]); 4 設有如下定義, 若有 p=&data;, 則對 data 中 a 欄位的正確引用是 struct sk { int a; float b; data, *p A. (*p).data.a B. (*p).a
C. p->data.a D. p.data.a 5 若需建立如圖所示的儲存結構, 以下正確的語法組是 : G q p c A. char **q, *p, c; p=&c; q=*p; C. char **q, *p, c; p=&c; q=&p; B. char *q, *p, c; p=&c; *q=p; D. char *q, *p, c; q=p; p=*c; 6 已有以下定義和語法, 則值為 200 的表述式是 : struct ks { int a; int *b; main( ) { int x[ ]={110, 120, x1[]={210,220; struct ks *p, x[]={100, x0, 200, x1; p=x;. A. (++p)->a B. p->a C. ++p->a D. (p++)->a 7 以下結構體敘述和變數定義中, 正確的是 : A. struct abc float m ; C. typedef struct abc floatm; ABC; ABC x, y; B. struct ABC float m; struct ABC x, y; D. struct abc float m; ; abc x, y; 8 結構體成員在記憶體中從高位到低位的排列順序是
A. 按結構體敘述中成員出現的先後順序, 先出現的在低位 B. 按結構體敘述中成員出現的先後順序, 先出現的在高位 C. 佔記憶體量少的成員在低位 D. 佔記憶體量大的成員在低位 9 已知教師紀錄描述為 struct teacher { int id ; char name[10] struct {int y ; int m; int d; birth; t; 將變數 t 中的 d 成員指定為 12 的語法為 A. d=12 B. birth.d = 12; C. t.d =12; D. t.birth.d = 12; 10 以下對結構體型態變數的定義中, 不正確的是 : A. typedef struct aa B. #define AA struct aa AA float m; float m; AA; td1; AA td1; C. struct D. struct float m; float m; aa; td1; struct aa td1; 11 設有以下敘述語法 : struct ex { int x; float y; char z; example; 則下面的敘述中不正確的是 A. struct 是結構體型態的關鍵字 B. example 是用戶定義的結構體型態名 C. x, y, z 都是結構體成員名 D. struct ex 是用戶定義的結構體型態 12 設有如下定義 : struct st
{ int id; float score ; std1, *p; 若要使 P 指向 std1 中的 id 欄位, 正確的指定語法是 A. p=&std1.id B. p=(struct st *) std. id; C. p=(struct st *)&std1.id; D. *p=std1.id 13 若有以下敘述和語法, 則對 st 中 sex 欄位的正確引用方式是 :.. struct student { char name[20]; int sex; st, *p; p=&st; A. p->st.sex B. (*p).st.sex C. (*p).sex D. p.st.sex 14 若有以下敘述和語法, 則以下選項中值為 7 的表述式是.. struct st struct st *next; ; struct st a[3]={5, &a[1], 7, &a[2], 9, \0, *p; p=&a[0];. A. p++ -> n B. ++p -> n C. (p++) ->n D. (++p) ->n 15 以下對 Union 變數 ex 的定義中不正確的是 : A. union double x; ex; B. union untype double x; ; untype ex; C. typedef union double x; UN; UN ex; D. union un double x; ; union un ex; 16 在定義一個 Union 變數時, 系統為其分配儲存空間的原則是 :
A. 按所有成員所需要的儲存空間總和分配 B. 按成員中佔儲存空間最大者分配 C. 按成員中佔儲存空間最小者分配 D. 按第一個成員所需的儲存空間分配 17 以下關於 Union 的敘述中不正確的是 : A. 在定義 Union 變數時不可以對其成員進行初始化 B. 一個 Union 變數不能同時存放其所有成員的值 C. Union 變數中的所有成員具有相同的首位址 D. 兩個同型態的共同體變數之間可以直接進行指定運算 18 若有下面的敘述和定義, 則 sizeof (struct aa) 的值是 struct aa { int r1; double r2; float r3; union uu { char u1[5]; long u2[2]; ua; mya; A. 30 B. 29 C. 24 D. 22 19 以下程式的輸出是 typedef union { long x[2]; int y[2]; char z[2]; MYTYPE; MYTYPE them; main () { printf ( %d\n, sizeof (them) ); A. 14 B. 16 C. 8 D. 22 20 以下程式的輸出是 struct rec1 { int num; char nam[8]; char adr[12]; ; struct rec2 { int num; float s[3]; ; typedef union { struct rec1 bas; sturct rec2 sc; REC; REC st;
main () { printf( %d\n, sizeof (REC)-sizeof(st)); A. 22 B. 14 C. 8 D. 0 21 1. 下列程式的輸出結果是 : #include <stdio.h> main() { union { int i[2]; long k; char c[4]; *s, a; s=&a; s->i[0]=0x39; s-> i[1]=0x38; printf ( %1x\n, s->k ); A. 3839 B. 3938 C. 380039 D. 390038 22 設有定義語法 : struct { short int m; unsigned w1 :4; unsigned :2; unsigned w2 :2; mix; 則以下敘述中不正確的是 A. 變數 mix 中有結構體成員和位段成員 B. w1 和 w2 是位段名 C. 數字 4 2 2 表示位元組數 D. 無名位段不能被引用 23 設有以下定義 : struct { unsigned bp1 :6; unsigned :0; unsigened bp2 :4; unsigned bp3 :4; comp; 假設各位段均已獲合法值, 則以下對位段的引用中不合法的是 : A. comp.bp1=comp.bp2+comp.bp3 B. comp.bp1++; C. scanf( %d, &comp.bp1); D. printf( %d\n, comp.bp1);
24 已有以下定義和語法, 則輸出結果是 #include stdio.h main( ) { enum team {qiaut, cubs=4, pick, dodger=qiaut-2; printf( %d, %d,%d, %d\n, qiaut, cubs, pick, dodger); A. 出錯 B. 1, 4, 3, -2 C. 0, 4, 5,-2 D. 1, 4, 5, -1 25 設有如下列舉型態定義, 列舉量 Fortran 的值是 enum language {Basic=3, Assembly, Ada=100, COBOL, Fortran; A. 1 B. 6 C. 102 D. 103 26 以下對列舉型態名的定義中正確的是 A. enum a={one, two, three; B. enum a{ one=9, two=-1, three; C. enum a={ one, two, three ; D. enum a{ one, two, three ; 27. 已知 struct { int b; char c[10] double a; ex; 則 sizeof(ex) 的值是 A. 2 B. 8 C. 10 D. 22 28. 關於 typedef 的介紹, 何者錯誤 A. typedef 所定義的型別需放在變數名稱之位置, 而非直接置於 typedef 後 C. typedef char BullCow[4]; BullCow x; 則 x 相當於 char x[4] 定義變數 B. typedef 宣告並未創立一個新的型別, 而是僅就有之型別給俞新的名稱而已 D. 以上皆非
29. 在 C 語言宣告結構的是使用 關鍵字? A. struct B. union C. typedef D. malloc 30. 在 C 語言宣告聯合的是使用 關鍵字? A. struct B. union C. typedef D. malloc 31. 定義 C 語言新型態的別名的是使用 關鍵字? A. struct B. union C. typedef D. malloc 32. 關於位元欄位的宣告資料型態, 何者正確 A. struct A{ unsingned int x : 1; B. union A{ unsingned int x : 1; C. typedef unsingned int x : 1; D. 以上皆非 33. C 語言的動態記憶體配置是使用 <stdlib.h> 標頭檔的 和 函數 A. fseek( ),getchar( ) B. fseek( ),free( ) C. malloc( ),getchar( ) D. malloc( ),free( ) 34. 建立 address 的結構, 內涵 3 個字串 address,city,zip 的成員變數 請選出上述結構宣告正確者 A. struct address{ char address; char city; char zip; B. union address{ char address; char city; char zip; C. union address{ char address; char city; int zip; D. struct address{ char address; char city; int zip; 35. 關於結構資料型態的敘述, 何者不正確?
A. 可以讓程式設計者自行在程式碼定義新的資料型態 C. 是由一個或是多個不同資料型態所組成的集合, 然後使用一個新名稱來代表 B. 結構和聯合 列舉都屬於自定資料 型態 D. 以上皆非 答案 : 1. C 2. D 3. D 4. B 5. C 6. A 7. C 8. A 9. D 10. C 11. B 12. C 13. C 14. D 15. B 16. B 17. A 18. D 19. C 20. D 21. C 22. C 23. C 24. C 25. C 26. B 27. D 28. D 29. A 30. B 31. C 32. A 33. D 34. A 35. D
第 7 章中 1. 若以建立如圖所示的鏈結表結構, 指標 p s 分別指向圖中所示的節點, 則不能將 s 所指的節點插入到鏈結表末表的語法組是 : dat nex P hea E F \.0 s E A. s->next=null; p=p->next; p->next=s; B. p=p->next; s->next=p->next; p->next=s; C. p=p->next; s->next=p; p->next=s; D. p=(*p).next; (*s).next=(*p).next; (*p).next=s; 2. 有以下結構體敘述和變數的定義, 且如圖所示指標 p 指向變數 a, 指標 q 指向變數 b 則不能把節點 b 連接到節點 a 之後的語法是 struct node { char data; struct node *next; a, b, *p=&a, *q=&b; a b data next data next W A \0 p q 變數間的關係示意圖 A. a.next=q B. p.next=&b C. p->next=&b D. (*p).next=q 3. 若有以下敘述和語法, 且變數 s 中的各成員都已賦確定值, 請選出引用 Union 中 k 元素的正確形式
union u { int k; char c; ; struct pn { int a[4]; unionu u k ; s, *ps; ps=&s; A. (*ps).k.k B. pn.u.k C. s.u.k D. ps->pn.u.k 答案 : 1. C 2. B 3. A 4. 5.