7.1 單項(xiàng)選擇題
1.設(shè)有定義"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
【解】結(jié)構(gòu)數(shù)組d有兩個(gè)結(jié)構(gòu)元素,每個(gè)結(jié)構(gòu)又由兩個(gè)整型成分組成,初始化后,d[0].x=1,d[0].y=3,d[1].x=2。所以表達(dá)式d[0].y/d[0].x* d[l].x的值是 6。所以正確解答是④。
2.設(shè)有定義"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的枚舉常量對應(yīng)的整數(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,……};
其中枚舉類型常量都是互不相同的標(biāo)識符。所以定義enum a {a1,a2,a3 };
是一個(gè)正確的定義。任何在枚舉類型名之后接上 =,或用字符常量,或用字符串常量作為枚舉類型常量都是不正確的定義。解答應(yīng)是②。
4.若有如下定義,則 printf("%d\n", sizeof(them));的輸出是( )
typedef union { lOng x[2];int y[4];char z[8];} MYTYPE;MYTYPE them;
①32 ②16 ③8 ④24
【解】共用型變量的成分是覆蓋存儲,為共用型變量分配存儲時(shí),以其中需要最多存儲字節(jié)的成分進(jìn)行分配。設(shè)long型數(shù)據(jù)占4個(gè)字節(jié)、int型數(shù)據(jù)占2個(gè)字節(jié)。共用型MYTYPE有三個(gè)成分,第一個(gè)成分是有兩個(gè)long型元素的數(shù)組,它需要8個(gè)字節(jié);第二個(gè)成分是有4個(gè)int型元素的數(shù)組,它也需要8個(gè)字節(jié);第三個(gè)成分是有8個(gè)字符元素的數(shù)組,也是8個(gè)字節(jié)。所以MYTYPE類型的共用型變量只需要8個(gè)字節(jié)。正確解答是③。
5.設(shè)有以下說明和定義:
typedef union {long i;int k[5]; char c;} DATE;
struct date {int cat; DATE cow; double dog;} too;
DATE max;
則下列語句的執(zhí)行結(jié)果是( )
printh("%d",sizeof(struct date)+sizeof(max));
① 26 ② 30
③ 18 ④ 8
【解】設(shè)long型數(shù)據(jù)占4個(gè)字節(jié)、int型數(shù)據(jù)占2個(gè)字節(jié),double數(shù)據(jù)占8個(gè)字節(jié)。共用型DATE有三個(gè)成分:long型成分i,有五個(gè)int型元素的數(shù)組k,char型成分 c。所以 DATE類型的變量需要10個(gè)字節(jié)。結(jié)構(gòu)類型date有三個(gè)成分:int型成分cat,DATE共用類型cow, double型成分dog。所以結(jié)構(gòu)類型 date需要20個(gè)字節(jié)。所以表達(dá)式 sizeof(struct date)+sizeof max的值是30。正確解答是②。
6.根據(jù)下面的定義,能打印出字母M的語句是( )
struct person {char name[9]; int age; };
struct person c[1O] = {{"John",17 },{"Paul",19 },{"Mary",18 },{"Adam",16 }};
① printf("%c", c[3].name); ② printf("%c", c[3].name[1] );
③printf("%c",c[2].name[1]); ④printf("%c",c[2].name[0] );
【解】結(jié)構(gòu)類型struct person有兩個(gè)成分:九個(gè)元素的字符數(shù)組name和一個(gè)基本整型age。元素類型為 struct person的數(shù)組c有10個(gè)元素,其中前四個(gè)元素被設(shè)定了初值。在已設(shè)定初值的元素中,只有c[2].mame[0]的值是字符M。其余元素及元素的成分都不是字符比正確解答是④。
7.設(shè)有如下定義,則對data中的a成員的正確引用是( )
struct sk{int a;float b;} data,*p= & data;
①(*p).data.a ②(*p).a ③ p -> data.a ④ p.data.a
【解】結(jié)構(gòu)變量data有兩個(gè)成分a和b。結(jié)構(gòu)指針變量p指向結(jié)構(gòu)變量data。引用結(jié)構(gòu)變量data的成分a有兩種方法:一是直接由變量data引用其自己的成分a,寫成data.a;二是通過指針變量p引用它所指的結(jié)構(gòu)的成分a,這又有兩種寫法,分別是p -> a和(*p).a。正確解答是②。
7.2 填充題
1.運(yùn)算符"."稱為__________運(yùn)算符,運(yùn)算符" -> "稱為__________運(yùn)算符。
【解】引用結(jié)構(gòu)變量或共用型變量的成分用成員運(yùn)算符’.’,若某指針指向一個(gè)結(jié)構(gòu)變量或共用型變量,通過指針引用它所指變量的成分用指向成員運(yùn)算符’ -> ’。
2.設(shè)有定義"struct {int a; float b; char c;} abc,*p_abc=&abc;",則對結(jié)構(gòu)體成員a的引用方法可以是abc_________a和p_abc___________a。
【解】若有結(jié)構(gòu)變量abc有成分a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成分a的標(biāo)記形式有abc.a和p_abc ->a。
3.若有以下說明和定義語句,則變量W在內(nèi)存中所占的字節(jié)數(shù)是__________。
union aa {float x;float y; char c[6]; };
struct st { union aa v; float w[5]; double ave; } w;
【解】共用型aa有三個(gè)成分,一個(gè)是float型成分x,一個(gè)是float型成分y,再一個(gè)是有六個(gè)元素的字符數(shù)組。若float型數(shù)據(jù)占4個(gè)字節(jié),則類型aa數(shù)據(jù)要占用6個(gè)字節(jié)。結(jié)構(gòu)變量w有三個(gè)成分,一個(gè)是共用型成分aa,要占用6個(gè)字節(jié);一個(gè)是有5個(gè)float型元素的數(shù)組w,要占用20個(gè)字節(jié);再一個(gè)是double型的ave。若doube型數(shù)據(jù)要8個(gè)字節(jié),則結(jié)構(gòu)變量w要占用34個(gè)字節(jié)。
更多軟考資料請?jiān)L問:考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |