分站导航

热点关注

当前位置:

首页 > 专业大全

2012年自考“高级语言程序设计”经典习题及答案(27)

来源:本站整理 时间:2020-02-13 15:55:07

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

解 结构数组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

解 按枚举类型定义的规定,枚举类型team的枚举常量对应的整数分别是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

解 共用型变量的成分是覆盖存储,为共用型变量分配存储时,以其中需要最多存储字节的成分进行分配。设long型数据占4个字节、int型数据占2个字节。共用型MYTYPE有三个成分,第一个成分是有两个long型元素的数组,它需要8个字节;第二个成分是有4个int型元素的数组,它也需要8个字节;第三个成分是有8个字符元素的数组,也是8个字节。所以MYTYPE类型的共用型变量只需要8个字节。正确解答是③。

5.设有以下说明和定义:

typedef union {long i;int k[5]; char c;} DATE;

struct date {int cat; DATE cow; double dog;} too;

DATE max;

则下列语句的执行结果是( )

printh( %d ,sizeof(struct date)+sizeof(max));

① 26 ② 30

③ 18 ④ 8

解 设long型数据占4个字节、int型数据占2个字节,double数据占8个字节。共用型DATE有三个成分:long型成分i,有五个int型元素的数组k,char型成分 c.所以 DATE类型的变量需要10个字节。结构类型date有三个成分:int型成分cat,DATE共用类型cow, double型成分dog.所以结构类型 date需要20个字节。所以表达式 sizeof(struct date)+sizeof max的值是30.正确解答是②。

6.根据下面的定义,能打印出字母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有两个成分:九个元素的字符数组name和一个基本整型age元素类型为 struct person的数组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在内存中所占的字节数是__________.

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,再一个是有六个元素的字符数组。若float型数据占4个字节,则类型aa数据要占用6个字节。结构变量w有三个成分,一个是共用型成分aa,要占用6个字节;一个是有5个float型元素的数组w,要占用20个字节;再一个是double型的ave.若doube型数据要8个字节,则结构变量w要占用34个字节。

7.3 程序分析题

1.阅读下列程序,写出运行结果。(字符0的ASCII码为十六进制的30)

main()

{ union { char c; char i[4]; } z;

z.i[0]= 0x39;z.i[1]= 0x36;

printf( %c \n , z.c);

}

解 共用型变量z有两个成分,一个是字符型的c,另一个是有4个字符的数组i.由于共用型的成分是覆盖存储,成分c的内容也是成分i的首元素。程序给Z的i成分的首元素置十六进制代码0x39,即十进制数57.数57是字符 9 的ASCII代码。用字符输出格式,输出该变量的值,将输出字符 9 .

分享:

qq好友分享 QQ空间分享 新浪微博分享 微信分享 更多分享方式

上一篇:<上一篇

下一篇:

(c)2024 www.diying.com All Rights Reserved SiteMap 联系我们 | 豫ICP备2022007582号