C语言程序设计 结构体与共用体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
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;