第7章自定义数据类型习题一.选择题:1.当定义一个结构体变量时,系统分配给它的内存空间是【】。
A) 结构中一个成员所需的内存量 B) 结构中最后一个成员所需的内存量 C) 结构体中占内存量最大者所需的容量 D) 结构体中各成员所需内存量的总和2.若有以下说明,对初值中整数2的正确引用方式是【】。
static struct{char ch;int i;double x;} a[2][3]={{‘a’,1,3 .45,’b’,2,,’c’,3,}{‘d’,4,,’e’,5,,’f’,6, }};A) a[1][1].i B) a[0][1].i C) a[0][0].i D) a[0][2].i3.根据以下定义,能打印字母M的语句是【】。
struct p{char name[9];int age;}c[10]={“Jobn”,17,”Paul”,19,”Mary”,18,”Adam”,16};A) printf(“%c”,c[3].name); B) printf(“%c”,c[3].name[1]);C) printf(“%c”,c[2].name); D) printf(“%c”,c[2].name[0]);4.以下说明和语句中,已知int型数据占两个字节,则以下语句的输出结果是【】。
struct st{char a[l0];int b;double c;};printf(“%d”,sizeof(struct st));A) 0 B) 8 C) 20 D) 25.以下说明和语句中,对结构体变量std中成员id的引用方式不正确的是【】。
struct work{int id;int name;} std, *p;p=&std;A) B) * C) (*p).id D) &6.如设有如下定义,若要使px指向rec中的成员x,正确的赋值语句是【】。
struct aa{int x;float y;}rec, *px;A) *px=;B) px=&C) px=(struct aa*);D) px=(struct aa*)&;7.下列程序的输出结果是【】。
#include<stdio h>main(){struct date{int y,m,d;};union{long i;int k;char ii;}mix;printf(“%d,%d\n”,sizeof(struct date),sizeof(mix));}A) 6,2 B) 6,4 C) 8,4 D) 8,68.设有以下结构体定义,若要对结构体变量p的出生年份赋值.下面正确的语句是【】。
struct date{int y;int m;int d;}struct worklist{ char name[20];char sex;struct date birthday;} p;A) y=1976;B) =1976;C) ;D) =1976;9.若有以下说明语句:struct p{ char name[20];int age;char sex;}a={“li ming”,20,‘m’},p=&a;则对字符串“li ming”的错误引用方式是【】。
A) (*p).name B) *C) D)10.当说明一个联台体变量时,系统分配给它的内存为【】。
A) 联台体中的一个成员所需的内存量B) 联台体中最后一个成员所需的内存量C) 联台体体中占内存量最大者所需容量D) 联台体中各成员所需内存量的总和11.设有以下说明,则下面不正确的叙述是【】。
union data{int I;char c;float f;}a;A) a所占的内存长度等于成员f的长度B) a的地址和它的各成员地址都是同一地址C) a可以作为函数参数D) 不能对a赋值,但可以在定义a时对它初始化12.下面程序的运行结果是【】。
main(){union u{char *name;int age;int income;}s;=”wanghong”;=26;=2000;printf(“%d\n”,;}A) 8 B) 1000C) 0 D) 不确定13.已知字符0的ASCII码为十六进制的30,下面程序的输出为【】。
main(){union{char c;unsigned int a[4];}z;[0]=0x39;[l]=0x36;printf(“%c\n”, ;}A) 6 B) 9C) 0 D) 314.若定义共用(联合)体数据类型如下.union{int a;int b;} x,y;执行语句=3;=4;=*2;后,则的值为【】。
A) 3 B) 4 C) 6 D) 815.定义以下结构体数组{int year;int month;};struct s{struct date birth;char name[20];}x[4]={{2010,8,"Beijing"},{1999,9,"Nanjin"}};语句printf("%s,%d",x[0].name, x[0].;的输出结果为【】。
A) Beijing,8 B) Nanjin,9C) Beijing,2010 D) Nanjin,199916.运行下列程序段,输出结果是【】。
struct country{int num;char name[20];}x[5]={1,”china”,2,”USA”,3,”France”,4,”England”,5,”Spanish”};struct country *p;p=x+3:printf(“%d,%c",*,(*p)name[2]);A) 3,a B) 4,g C) 2,U D) 5,S17.在以下程序段中,已知int型数据占两个字节,则输出结果是【】。
union un{int I;double y;}{char a[10];union un b;}printf(“%d”,sizeof(struct st));A) 14 B) 18 C) 20 D) 1618.定义以下结构体数组struct st{char name[20] ;int age;}c[10]={“zhang”,16,”Li”,17,”Ma”,18,”Huang”,19};执行语句printf(“%d,%c”,c[2].age,*(c[3].name+2))的输出结果为【】。
A) 17,i B) 18,M C) 18,a D) 18,u19.若定义以下结构体数组struct contry{int num;char name[20];}x[5]={1,”China”,2,”USA”,3,”France”,4,”England”,5,”Spain”};执行for(i=1;i<5;i++) printf(“%d%c”,x[i].num,x[i].name[2]);输出结果为【】。
A) 2A3a4g5a B) IS2r3n4pC) 1A2a3g4a D) 2A3n4l5n20.定义以下结构体数组struct date{int year;int month;};struct s{struct date birth;char name[20];} x[4]={{1977,8,"hangzhou"},{1975,9,"Tianjin"}};语句printf("%S,%d",x[0].name,x[1].;的输出结果为【】。
A) a,1977 B) hangzhou,1975C) Tianjin,1975 D) Tianjin,1975 21.定义以下结构体类型struct s{int a;char b;float f;};语句printf("%d",sizeof(struct s))的输出结果为【】。
A) 3 B) 4 C) 6 D) 722.定义以下结构体数组struct c{int x;int y;}x[2]={1,3,2,7};语句printf("%d",x[0].x*x[1].x)的输出结果为【】。
A) 2 B) 6 C) 14 D) 2123.定义以下结构体类型struct s{int a;float f;};语句printf("%d",sizeof(struct s))的输出结果为【】。
A) 2 B) 3 C) 4 D) 624.定义以下结构体数组struct c{int x;float y;}x[2]={1,,2,};语句printf("%d-%f",x[0].x,x[1].y)的输出结果为【】。
A) B) 2-4.1 C) D)25.下面程序运行后,输出结果是【】。
main(){struct{int num;char name[10];s[3]={1,"china",3,"USA",4,"England"};printf("\n%d,%s",s[0].num,s[2].name);}A) 1,England B) 4,USA C) 3,China D) 2,USA 26.定义以下结构体数组struct date{int year;int month;};struct s{struct date birth;char name[20];} x[4]={{1977,8,"hangzhou"},{1975,9,"Tianjin"}};语句printf("%c,%d",x[1].name[1],x[1].;的输出结果为【】。
A) a,1977 B) hangzhou,1977 C) i,1975 D) Tianjin,1975二、读程序写结果1. 以下程序的运行结果是【】。
main(){struct EXAMPLE{struct{int x;int y;}in;int a;int b;}e;=1;=2;printf("%d,%d”, ;}三.填空题1. 以下程序用以输出结构体变量bt所占内存单元的字节数,请在【1】内填上适当内容。
struct ps{double a;char arr[20];};main(){struct ps t;printf(“t size: %d\n”,【1】);}2. 以下程序用来按学生姓名查询其排名和平均成绩。
查询可连续进行,直到键入0时结束,请在【】内填入正确内容。