当前位置:文档之家› 自定义数据类型习题及答案(C语言)

自定义数据类型习题及答案(C语言)

} p;
A)y=1976;B)birthday.y=1976;
C)p.birthday.y=1976;D)p.y=1976;
9.若有以下说明语句:
structp
{ char name[20];
intage;
char sex;
}a={“liming”,20,‘m’},p=&a;
则对字符串“liming”的错误引用方式是【】。
{
structdate birth;
char name[20];
} x[4]={{1977,8,"hangzhou"},{1975,9,"Tianjin"}};
语句printf("%S,%d",x[0].name,x[1].birth.year);的输出结果为【】。
A) a,1977B)hangzhou,1975
A)Beijing,8B) Nanjin,9
C) Beijing,2010 D) Nanjin,1999
16.运行下列程序段,输出结果是【】。
structcountry
{
intnum;
char name[20];
}x[5]={1,”china”,2,”USA”,3,”France”,4,”England”,5,”Spanish”};
structcountry *p;
p=x+3:
printf(“%d,%c",*p.num,(*p)name[2]);
A)3,aB)4,gC)2,UD)5,S
17.在以下程序段中,已知int型数据占两个字节,则输出结果是【】。
union un
{
intI;
double y;
}
structst
{
char a[10];
inti;
double x;
} a[2][3]={{‘a’,1,3 .45,’b’,2,7.98,’c’,3,1.93I}
{‘d’,4,4.73,’e’,5,6.78,’f’,6,8.79 }};
A) a[1][1].iB) a[0][1].iC) a[0][0].iD) a[0][2].i
3.根据以下定义,能打印字母M的语句是【】。
structdate
{
intyear;
intmonth;
};
structs
{
structdate birth;
char name[20];
} x[4]={{1977,8,"hangzhou34;}};
语句printf("%c,%d",x[1].name[1],x[1].birth.year);的输出结果为【】。
11.C12.B13.B14.D15.A16.B17.B18.C19.A20.B
21.D22.A23.D24.D25.A26.C
二、读程序写结果
1.2,3
三、填空题
1.sizeof(structps)
2.【1】structstudent【2】strcmp(str,stu[i].name)==0【3】break
A) a,1977 B)hangzhou,1977 C) i,1975 D)Tianjin,1975
二、读程序写结果
1.以下程序的运行结果是【】。
main()
{
structEXAMPLE
{
struct
{
intx;
inty;
}in;
inta;
intb;
}e;
e.a=1;
e.b=2;
e.in.x=e.a*e.b;
union un b;
}
printf(“%d”,sizeof(structst));
A)14 B)18 C)20 D)16
18.定义以下结构体数组
structst
{
char name[20];
intage;
}c[10]={“zhang”,16,”Li”,17,”Ma”,18,”Huang”,19};
A)(*p).nameB)*
C)D)
10.当说明一个联台体变量时,系统分配给它的内存为【】。
A)联台体中的一个成员所需的内存量
B)联台体中最后一个成员所需的内存量
C)联台体体中占内存量最大者所需容量
D)联台体中各成员所需内存量的总和
11.设有以下说明,则下面不正确的叙述是【】。
24.定义以下结构体数组
structc
{
intx;
float y;
}x[2]={1,3.2,2,4.1};
语句printf("%d-%f",x[0].x,x[1].y)的输出结果为【】。
A) 1-3.2 B) 2-4.1 C) 2-4.1 D) 1-4.1
25.下面程序运行后,输出结果是【】。
main()
执行for(i=1;i<5;i++)printf(“%d%c”,x[i].num,x[i].name[2]);
输出结果为【】。
A)2A3a4g5aB)IS2r3n4p
C)1A2a3g4aD)2A3n4l5n
20.定义以下结构体数组
structdate
{
intyear;
intmonth;
};
structs
}
A) 6,2 B) 6,4 C) 8,4 D) 8,6
8.设有以下结构体定义,若要对结构体变量p的出生年份赋值.下面正确的语句是【】。
structdate
{inty;
intm;
intd;
}
structworklist
{ char name[20];
char sex;
structdate birthday;
union data
{
intI;
char c;
float f;
}a;
A) a所占的内存长度等于成员f的长度
B) a的地址和它的各成员地址都是同一地址
C) a可以作为函数参数
D)不能对a赋值,但可以在定义a时对它初始化
12.下面程序的运行结果是【】。
main()
{
union u
{
char *name;
执行语句printf(“%d,%c”,c[2].age,*(c[3].name+2))的输出结果为【】。
A)17,iB)18,MC)18,aD)18,u
19.若定义以下结构体数组
structcontry
{
intnum;
char name[20];
}x[5]={1,”China”,2,”USA”,3,”France”,4,”England”,5,”Spain”};
{
struct
{
intnum;
char name[10];
s[3]={1,"china",3,"USA",4,"England"
};
printf("\n%d,%s",s[0].num,s[2].name);
}
A)1,EnglandB)4,USAC)3,ChinaD)2,USA
26.定义以下结构体数组
C) Tianjin,1975D)Tianjin,1975
21.定义以下结构体类型
structs
{
inta;
char b;
float f;
};
语句printf("%d",sizeof(structs))的输出结果为【】。
A)3B)4 C)6 D)7
22.定义以下结构体数组
structc
{
intx;
inty;
e.in.y=e.a+e.b;
printf("%d,%d”,e.in.x,e.in.y);
}
三.填空题
1.以下程序用以输出结构体变量bt所占内存单元的字节数,请在【1】内填上适当内容。
structps
{
double a;
chararr[20];
};
main()
{
structpst;
printf(“t size: %d\n”,【1】);
C)px=(structaa*)rec.x;D)px=(structaa*)&rec.x;
7.下列程序的输出结果是【】。
#include<stdioh>
main()
{
structdate
{
inty,m,d;
};
union
{
longi;
intk;
char ii;
}mix;
printf(“%d,%d\n”,sizeof(structdate),sizeof(mix));
}x[2]={1,3,2,7};
语句printf("%d",x[0].x*x[1].x)的输出结果为【】。
A) 2B)6C) 14D) 21
23.定义以下结构体类型
structs
{
inta;
float f;
};
语句printf("%d",sizeof(structs))的输出结果为【】。
A) 2 B)3 C) 4 D) 6

一.选择题:
1.当定义一个结构体变量时,系统分配给它的内存空间是【】。
A)结构中一个成员所需的内存量B)结构中最后一个成员所需的内存量
C)结构体中占内存量最大者所需的容量D)结构体中各成员所需内存量的总和
2.若有以下说明,对初值中整数2的正确引用方式是【】。
staticstruct
{
相关主题