7.1 單項選擇題
1.設有定義“struct {int x;int y;} d[2]={{1,3},{2, 7}};”,則
printf(“%d\n”, d[0].y/d[0].x*d[l].x);的輸出是( )
①O ②l
③3 ④6
「解」結構數(shù)組d有兩個結構元素,每個結構又由兩個整型成分組成,初始化后,d[0].x=1,d[0].y=3,d[1].x=2.所以表達式d[0].y/d[0].x* d[l].x的值是 6.所以正確解答是④。
2.設有定義“enum term { my, your=4, his, her=his+10};”,則
printf(“%d,%d,%d,%d\n”,my, your, his, her);
的輸出是( )
①0,l,2,3 ②0,4,0,10
③0,4,5,15 ④1,4,5,15
「解」按枚舉類型定義的規(guī)定,枚舉類型team的枚舉常量對應的整數(shù)分別是my=0、your=4、his=5、her=15.所以語句輸出0,4,5,15.正確解答是③。
3.以下對枚舉類型名的定義中,正確的是()
①enum a ={one,two,three};
② enum a{a1, a2,a3};
③enum a ={‘1’,‘2’,‘3’};
④ enum a {“one”,“two”,“three” };
「解」枚舉類型定義的句法是:
enum 枚舉類型名 {枚舉類型常量1,枚舉類型常量2,……};
其中枚舉類型常量都是互不相同的標識符。所以定義enum a {a1,a2,a3 };
是一個正確的定義。任何在枚舉類型名之后接上 =,或用字符常量,或用字符串常量作為枚舉類型常量都是不正確的定義。解答應是②。
4.若有如下定義,則 printf(“%d\n”, sizeof(them));的輸出是( )
typedef union { lOng x[2];int y[4];char z[8];} MYTYPE;MYTYPE them;
①32 ②16 ③8 ④24
「解」共用型變量的成分是覆蓋存儲,為共用型變量分配存儲時,以其中需要最多存儲字節(jié)的成分進行分配。設long型數(shù)據(jù)占4個字節(jié)、int型數(shù)據(jù)占2個字節(jié)。共用型MYTYPE有三個成分,第一個成分是有兩個long型元素的數(shù)組,它需要8個字節(jié);第二個成分是有4個int型元素的數(shù)組,它也需要8個字節(jié);第三個成分是有8個字符元素的數(shù)組,也是8個字節(jié)。所以MYTYPE類型的共用型變量只需要8個字節(jié)。正確解答是③。
5.設有以下說明和定義:
typedef union {long i;int k[5]; char c;} DATE;
struct date {int cat; DATE cow; double dog;} too;
DATE max;
則下列語句的執(zhí)行結果是( )
printh(“%d”,sizeof(struct date)+sizeof(max));
① 26 ② 30
③ 18 ④ 8
「解」設long型數(shù)據(jù)占4個字節(jié)、int型數(shù)據(jù)占2個字節(jié),double數(shù)據(jù)占8個字節(jié)。共用型DATE有三個成分:long型成分i,有五個int型元素的數(shù)組k,char型成分 c.所以 DATE類型的變量需要10個字節(jié)。結構類型date有三個成分:int型成分cat,DATE共用類型cow, double型成分dog.所以結構類型 date需要20個字節(jié)。所以表達式 sizeof(struct date)+sizeof max的值是30.正確解答是②。
1.設有定義“struct {int x;int y;} d[2]={{1,3},{2, 7}};”,則
printf(“%d\n”, d[0].y/d[0].x*d[l].x);的輸出是( )
①O ②l
③3 ④6
「解」結構數(shù)組d有兩個結構元素,每個結構又由兩個整型成分組成,初始化后,d[0].x=1,d[0].y=3,d[1].x=2.所以表達式d[0].y/d[0].x* d[l].x的值是 6.所以正確解答是④。
2.設有定義“enum term { my, your=4, his, her=his+10};”,則
printf(“%d,%d,%d,%d\n”,my, your, his, her);
的輸出是( )
①0,l,2,3 ②0,4,0,10
③0,4,5,15 ④1,4,5,15
「解」按枚舉類型定義的規(guī)定,枚舉類型team的枚舉常量對應的整數(shù)分別是my=0、your=4、his=5、her=15.所以語句輸出0,4,5,15.正確解答是③。
3.以下對枚舉類型名的定義中,正確的是()
①enum a ={one,two,three};
② enum a{a1, a2,a3};
③enum a ={‘1’,‘2’,‘3’};
④ enum a {“one”,“two”,“three” };
「解」枚舉類型定義的句法是:
enum 枚舉類型名 {枚舉類型常量1,枚舉類型常量2,……};
其中枚舉類型常量都是互不相同的標識符。所以定義enum a {a1,a2,a3 };
是一個正確的定義。任何在枚舉類型名之后接上 =,或用字符常量,或用字符串常量作為枚舉類型常量都是不正確的定義。解答應是②。
4.若有如下定義,則 printf(“%d\n”, sizeof(them));的輸出是( )
typedef union { lOng x[2];int y[4];char z[8];} MYTYPE;MYTYPE them;
①32 ②16 ③8 ④24
「解」共用型變量的成分是覆蓋存儲,為共用型變量分配存儲時,以其中需要最多存儲字節(jié)的成分進行分配。設long型數(shù)據(jù)占4個字節(jié)、int型數(shù)據(jù)占2個字節(jié)。共用型MYTYPE有三個成分,第一個成分是有兩個long型元素的數(shù)組,它需要8個字節(jié);第二個成分是有4個int型元素的數(shù)組,它也需要8個字節(jié);第三個成分是有8個字符元素的數(shù)組,也是8個字節(jié)。所以MYTYPE類型的共用型變量只需要8個字節(jié)。正確解答是③。
5.設有以下說明和定義:
typedef union {long i;int k[5]; char c;} DATE;
struct date {int cat; DATE cow; double dog;} too;
DATE max;
則下列語句的執(zhí)行結果是( )
printh(“%d”,sizeof(struct date)+sizeof(max));
① 26 ② 30
③ 18 ④ 8
「解」設long型數(shù)據(jù)占4個字節(jié)、int型數(shù)據(jù)占2個字節(jié),double數(shù)據(jù)占8個字節(jié)。共用型DATE有三個成分:long型成分i,有五個int型元素的數(shù)組k,char型成分 c.所以 DATE類型的變量需要10個字節(jié)。結構類型date有三個成分:int型成分cat,DATE共用類型cow, double型成分dog.所以結構類型 date需要20個字節(jié)。所以表達式 sizeof(struct date)+sizeof max的值是30.正確解答是②。