一、 选择题
1、 定义结构类型时,下列叙述正确的是()
A、 系统会按成员大小分配每个空间 B、 系统会按最大成员大小分配空间 C、 系统不会分配空间 D、 以上说法均不正确
2、已知结构类型变量x的初始化值为{“20”,30,40,35.5},请问合适的结构定义是() A、 Struct s{int no;int x,y,z}; B、 Struct s{char no[2];int x,y,z}; C、 Struct s{int no;float x,y,z}; D、Struct s{char no[2];float x,y,z}; 3、若程序中有定义struct abc{int x;char y;};abc s1,s2;则会发生的情况是() A、 编译时会有错误 B、 链接时会有错误 C、 运行时会有错误 D、 程序没有错误
4、已知学生记录描述为
struct student
{int no;
char name[20]; char set; struct
{int year; int month; int day;
}birth;};
struct student s;
设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是( ).
A)year=1984; B)birth.year=1984; month=11; birth.month=11; day=11; birth.day=11; C)s.year=1984; D)s.birth.year=1984; s.month=11; s.birth.month=11; s.day=11; s.birth.day=11; 5、当说明一个结构体变量时系统分配给它的内存是( ).
A)各成员所需内存量的总和 B)结构中第一个成员所需内存量
C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 6、以下对结构体类型变量的定义中不正确的是( ).
A)#define STUDENT struct student B)struct student STUDENT {int num; {int num; float age; float age; }std1; }std1;
C)struct D)struct
{int num; int num; float age; float age;
}std1; }student;
struct student std1; 7、设有以下说明语句 struct stu {int a;
float b; }stutype;
则下面的叙述不正确的是( ).
A)struct是结构体类型的关键字
B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名
8、C语言结构体类型变量在程序执行期间( )..
A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中
9、在16位IBM-PC机上使用C语言,若有如下定义: struct data
{int i; char ch; double f;
}b;
则结构变量b占用内存的字节数是( ). A)1 B)2 C)3 D)4 10、以下程序的运行结果是( ).
#include “stdio.h”
main() {struct data
{int year,month,day;
}today;
printf(“%d\\n”,sizeof(struct data));}
A)6 B)8 C)10 D)12 11、若有以下定义和语句;
struct student
{int age; int num ;};
struct student stu [3]={{1001,20 },{1002,19},{1003,21}}; main()
{struct student *p;
p=stu; ?..}
则以下不正确的引用是( )。
A)(P++)—》 num B)p++ C)(*p).num D)p=&stu.age 12、以下scanf函数调用语句中对结构体 变量成员的不正确引用是( )。 stuct pupil
{char name[20 ]; int age ; int sex; }pup[5,]*p;
p=pup;
A) scanf(“%s”,pup[0].name); B) scanf(“”%d),&pup[0].age; C) scanf(“%d”,&sex));?D) scanf(“%d”,P->age); 13、有以下定义和语句,则以下引用形式不合法的是( )。 Struct s {int i1;
struct s*i2,i0;
};
static struct s a[3 ]={2,&a[1],’\\0’,4,%a[2],&a[0],6,’\\0’,&a[1]}, *ptr; ptr=a;
A) ptr->i1++ B)*ptr->i2 C)++ptr->i0 D)ptr->i1 14、设有如下定义: struct sk {int n; float x; }data,*p;
若要使P指向data中的n域, 正确的负值语句的是( )。
A、p=&data.n;B) *p=data.n;C)p=(struct sk*)&data.n;D)p=(struct sk*)data.n; 15、若哟于以下说明和语句: struct student {int age; int num; }std,*p; p=&std;
则以下对结构体变量std中成员age的引用方式不正确的是( )。 A)std.age B)p->age C)(*p).age D)*p.age 16、若有以下说明和语句,则下面表达式中值为1002的是( )。
Struct student {int age;
int num;};
struct student stu[3]={{1001,20},{1002,19},{1003,21};
struct student *p;
p=stu;
A)(p++)—>num B)(p++)—>age C)(*p).num D)(*++p).age 17、以下对结构体变量stul 中成员age 的非法引用是( )。
struct student {int age; int num;
}stul,*p;
p=&stul;
A)stul.age B)student.age C)p—>age D)(*p).age
18、若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ ]中
应填入的内容是( )。
int *p;
P=[ ]malloc(sizeof(int));
A)int B)int* C)(*int) D)(int*) 19、当说明一个共用体变量时系统分配给它的内存是( )。
A)各成员所需内存量的总和 B)结构中第一个成员所需内存量
C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 20、以下对C语言中共用体类型数据的叙述正确的是( )。
A)可以对共用体变量名直接赋值 B)一个共用体变量中可以同时存放其所有成员 C)一个共用体变量中不可能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员 21、若有以下定义和语句: union data {int i; char c; float f; }a;
int n;
则以下语句正确的是( )。
A)a=5; B)a={2,’a’,1.2}; C)printf(“%d\\n”,a); D)n=a;
22、设有以下说明,则下面不正确的叙述是( )。
union data
{ int i; char c; float f; }un;
A)un所占的内存长度等于成员f的长度 B)un的地址和它的各成员地址都是同一地址
C)un可以作为函数参数 D)不能对un赋值,但可以在定义un时对它初始化 23、C语言共用体型变量在程序运行期间 ( ) 。
A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 24、以下程序的运行结果是 ( ) 。 #include “stdio.h” main()
{ union {long a; int b; char c;
}m;
printf(“%d\\n”,sizeof(m));} A) 2 B)4 C)6 D)8
25、以下程序的运行结果是 ( ) .
#include “stdio.h” union pw {int i; char ch[2]; }a; main() {ch[0]=13;
ch[1]=0;
printf(“%d\\n”,a,i); } A)13 B)14 C)208 D)209
二、填空题
1、以下程序的运行结果是 【 】. . struct n{ int x; char c; };
main()
{struct n a={10,‘x’};
func(a);
printf(“%d,%c”,a.x,a.c);} func(struct n b)
{b.x=20;
b.c=’y’;}
2、 以下程序的运行结果是【 】.
main()
{struct EXAMPLE{struct{