11第十一章结构体及共用体
- 格式:ppt
- 大小:792.50 KB
- 文档页数:40
第11章结构体与共用体一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)11.1 C语言结构体类型变量在程序运行期间A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中考生答案: 正确答案: B11.2 下列各数据类型不属于构造类型的是A)枚举型 B)共用型 C)结构型 D)数组型考生答案: 正确答案: A11.3 当说明一个结构体变量时系统分配给它的内存是A)各成员所需内存量的总和 B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量考生答案: 正确答案: A11.4 设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名 B)PER是结构体类型名C)typedef struct 是结构体类型 D)struct 是结构体类型名考生答案: 正确答案: B11.5 已知有如下定义:struct a{char x; double y;}data,*t;,若有t=&data,则对data 中的成员的正确引用是A)(*t).data.x B)(*t).x C)t->data.x D)t.data.x 考生答案: 正确答案: B11.6 以下程序的运行结果是#include "stdio.h"main(){ struct date{ int year,month,day; } today;printf("%d\n",sizeof(struct date));}A)6 B)8 C)10 D)12考生答案: 正确答案: A11.7 设有如下定义:struck sk{ int a;float b;} data;int *p;若要使P指向data中的a域,正确的赋值语句是A)p=&a; B)p=data.a; C)p=&data.a; D)*p=data.a; 考生答案: 正确答案: C11.8 以下对结构体类型变量的定义中,不正确的是A)typedef struct aa{ int n;float m;} AA;AA tdl;B)#define AA struct aaAA { int n;float m;} tdl;C)struct{ int n;float m;} aa;struct aa tdl;D)struct{ int n;float m;} tdl;考生答案: 正确答案: C11.9 若有下面的说明和定义struct test{ int ml; char m2; float m3;union uu { char ul[5]; int u2[2];} ua;} myaa;则sizeof(struct test )的值是A)12 B)16 C)14 D)9考生答案: 正确答案: A11.10 以下程序的输出是struct st{ int x; int *y;} *p;int dt[4]={ 10,20,30,40};struct st aa[4]={ 50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};main(){ p=aa;printf("%d\n",++(p->x));}A)10 B)11 C)51 D)60考生答案: 正确答案: C11.11 有以下程序:#include <stdio.h>union pw{ int i;char ch[2];}a;main(){ a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}程序的输出结果是A)13 B)14 C)208 D)209 考生答案: 正确答案: A11.12 已知学生记录描述为:struct student{ int no;char name[20],sex;struct{ int year,month,day;} birth;};struct student s;设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是A)year=1984;month=11;day=12;B)s.year=1984;s.month=11;s.day=12;C)birth.year=1984;birth.month=11;birth.day=12;D)s.birth.year=1984;s.birth.month=11;s.birth.day=12;考生答案: 正确答案: D11.13 有如下定义struct person{char name[9];int age;};struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};根据上述定义,能输出字母M的语句是A)printf("%c\n",class[3].name);B)printf("%c\n",class[3].name[1]);C)printf("%c\n",class[2].name[1]);D)printf("%c\n",class[2].name[0]);考生答案: 正确答案: B11.14 下列程序的输出结果是struct abc{ int a, b, c, s; };main(){ struct abc s[2]={{1,2,3},{4,5,6}}; int t;t=s[0].a+s[1].b;printf("%d\n",t);}A)5 B)6 C)7 D)8考生答案: 正确答案: B11.15 若有下面的说明和定义,则sizeof(struct aa)的值是struct aa{ int r1; double r2; float r3;union uu{char u1[5];long u2[2];}ua;} mya;A)30 B)29 C)24 D)22考生答案: 正确答案: D11.16 有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。
结构体与共用体一、选择题:1.已知赋值语句wang.year=2004;则wang的变量类型是()A. 字符或文件B. 整型或实型C. 共用或结构D. 实型或指针2.Turbo C中,以下类型数据在存储器中占的字节数为 ( ) struct test{ int x;float y;char z;} ;A. 2B. 3C. 6D. 73.以下语句中,成员data的正确引用方式为( ) struct node{ int data;char name[10];}stree;struct node *p=&stree;A. p.dataB. p->dataC. (*p)->dataD. stree->data4、当执行以下程序段时,输出的结果是。
()struct data{ char a; int b; float c; };printf(“%d”, sizeof(struct data));A. 1B. 2C. 4D. 75.下面程序段的运行结果是。
struct stu{ int num; char name[10]; float scrose ; };printf(“%d\n”, sizeof (struct stu ));(A)14 (B)12 (C)16 (D)36. 若有定义:typedef char* string;#define str char *int a=4;struct {int x, *y;}z={10, &a}, *p=&z;则下列不等价的是:A. string name, sign; 与 str name, sign;B. *p->y++ 与 *(p->y++)C. ++*p->y 与 ++(*p->y)D. ++p->x与++(p->x) ()二、填空题:1.已知赋值语句zhang.year=1985;可判断zhang是类型的变量;2.若有类型定义:“typedef union{int a; char b; double c;} share;”及声明:“float r;”,则表达式:sizeof(r)+sizeof(share)的值是:。
第十一章 结构体与共用体1、 填空(1) 为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向结点的指针域),请填空。
Struct link{char data;;}node;(2) 以下程序的输出结果是 。
main(){struct cmplx{int x;int y;} cnum[2]={1,3,2,7};printf(“%d\n ”,cnum[0].y/cnum[0].x*cnum[1].x);}2、 选择(1) 根据以下定义,能输出字母M 的语句是A.printf(“%c\n ”,class[3].name);B.printf(“%c\n ”,class[3].name[1]);C.printf(“%c\n ”,class[2].name[1]);D.printf(“%c\n ”,class[2].name[0]); struct person { char name[9];int age;};struct person class[10]={ “John ”,17,“Paul ”,19,“Mary ”,18,“Adam ”,16,};(2) 对整个结构能够进行的操作是 。
A. 对结构进行赋值data nextB.对结构进行存取C.对结构进行运算D.对结构进行&操作(3)不是结构类型的特点的选项为。
A.结构体变量可以有不同类型的成员B.结构体中的成员都占有存储空间C.结构体变量既可以做函数参数,又可以从函数中返回D.结构体变量的成员既可以读又可以写3、判断(1)能在一个存储区内处理不同的类型的数据叫结构。
()(2)在编译时对结构类型不分配空间,只能对变量分配空间。
()(3)结构一旦定义,系统就给它分配所需的内存单元。
()4、程序设计(1)设有以下结构类型说明:struct stud{char num[5],name[10];int s[4];double ave;}请编写:<1>readrec把30名学生的学号、姓名、四项成绩及平均分放在一个结构体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算出平均分放在结构提对应的域中。
11第十一章结构体与共用体结构体构体结的声、明结构变体的量义以及它定们的别区结构数组体的定义、初化始应及用向结指体变构以及量指结向构数组的指针体共用体声的明其及用引方式枚举型声明及其的用方式引户用自义定型类结构的定义体构结结体构的体应用结构体变量结体构组结数构指针体结构体变量结构体与类型的区别结构体与共体用共用体的定义共用体用共体量变共用的体应结构用与体共体用区的别共用体数组共用体指枚举针的义定枚举型户用自义定类型枚举应用共用的体量变与结构类型的体别区念的概导出实际应在用,常常需将中同不类型数的组合据一个成机的有整体这。
数据些是相联互的。
系一个如学生的有信息:关nmuna e msex ***** iL inmM aeg 18adrd Dalian若使用多个变量则它,之们无间系联;若使用组数,们又它是不一同类型。
必须一种新有数类型据,它既可容纳不同型类子的,又能项将子各项联成一体。
系就这是构体结型。
类数结构据描上述信述息。
什么是结体?构构体结是一组不类型同变的的量合。
集(这些量叫成员。
) 这变是C言语提的又供种一户自定义用、含的多种有型成类的员新类型是。
又一语言种级数据构。
结同不数于组的,是构结名体不字是再地址其;成组成员可以类型各不同相即不,等再小;大只有储是存连续的。
另,外每个成员拥都有己的存自储空间由。
是于型,所以不占用存储空类,间只而是给结体构量提供了变内布存局的模版。
构体结声的声明方明式:关键s字rutct结构名{ 新体型类结构名体员成表列类型块模} 一;要有分定号结构的体成可以员变量、数组、指针、甚是至其是它结体构量,变但们已它成组一个了可不分的整割。
体如例stru:c tstudnt e{char n ame20][ ;it idn f;lot chineaes ;lfat oenlisgh ;fola taeravg; };e结构体的储存模式ame[0n] //构结体名。
ch ar/结构体/成员1/ ../ d ini // .. ftoatlc ihens e/ /.. / /. otngeisl hveeagre float.结构体变量定的义结构体变量的定有义三方种:式1.声先明结构类型体再,定义该型类量:变trust ctsudnt setu1,stu;结构体类2名结构体变型量名如同:in于数据类t型a1a,2; 变名量样这便于修做,改便于使用。