自考“高級語言程序設計”習題答案詳解(39)

字號:

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.正確解答是②。