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。正確解答是②。
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] );
【解】結構類型struct person有兩個成分:九個元素的字符數(shù)組name和一個基本整型age。元素類型為 struct person的數(shù)組c有10個元素,其中前四個元素被設定了初值。在已設定初值的元素中,只有c[2].mame[0]的值是字符M。其余元素及元素的成分都不是字符比正確解答是④。
7.設有如下定義,則對data中的a成員的正確引用是( )
struct sk{int a;float b;} data,*p= & data;
①(*p).data.a ②(*p).a ③ p -> data.a ④ p.data.a
【解】結構變量data有兩個成分a和b。結構指針變量p指向結構變量data。引用結構變量data的成分a有兩種方法:一是直接由變量data引用其自己的成分a,寫成data.a;二是通過指針變量p引用它所指的結構的成分a,這又有兩種寫法,分別是p -> a和(*p).a。正確解答是②。
7.2 填充題
1.運算符"."稱為__________運算符,運算符" -> "稱為__________運算符。
【解】引用結構變量或共用型變量的成分用成員運算符’.’,若某指針指向一個結構變量或共用型變量,通過指針引用它所指變量的成分用指向成員運算符’ -> ’。
2.設有定義"struct {int a; float b; char c;} abc,*p_abc=&abc;",則對結構體成員a的引用方法可以是abc_________a和p_abc___________a。
【解】若有結構變量abc有成分a,并有指針p_abc指向結構變量abc,則引用變量abc成分a的標記形式有abc.a和p_abc ->a。
3.若有以下說明和定義語句,則變量W在內存中所占的字節(jié)數(shù)是__________。
union aa {float x;float y; char c[6]; };
struct st { union aa v; float w[5]; double ave; } w;
【解】共用型aa有三個成分,一個是float型成分x,一個是float型成分y,再一個是有六個元素的字符數(shù)組。若float型數(shù)據(jù)占4個字節(jié),則類型aa數(shù)據(jù)要占用6個字節(jié)。結構變量w有三個成分,一個是共用型成分aa,要占用6個字節(jié);一個是有5個float型元素的數(shù)組w,要占用20個字節(jié);再一個是double型的ave。若doube型數(shù)據(jù)要8個字節(jié),則結構變量w要占用34個字節(jié)。
更多軟考資料請訪問:考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |