当前位置:文档之家› 结构体与共同体文件测验

结构体与共同体文件测验

结构体与共同体文件测验
结构体与共同体文件测验

结构体与共用体

试卷编号:825 所属语言:C语言 试卷方案:结构体与共用体 试卷总分:90分 共有题型:5种 ━━━━━━━━━━━━━━ 一、填空共5题(共计10分) ━━━━━━━━━━━━━━ 第1题(2.0分)题号:205 结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体【1】,再说明结构体变量. 答案: =======(答案1)======= 类型 第2题(2.0分)题号:208 将函数funl 的入口地址赋给指针变量p的语句是【1】. 答案: =======(答案1)======= p=funl; 第3题(2.0分)题号:232 设有以下结构类型说明和变量定义,且sizeof(int)=2,则变量a在内存所占字节数是【1】. struct stud { char num[6]; int s[4]; double ave; } a,*p; 答案: =======(答案1)======= 22

第4题(2.0分)题号:345 若在程序中用到"strlen()"函数时,应在程序开头写上包含命令# include "【1】". 答案: =======(答案1)======= string.h 第5题(2.0分)题号:803 预处理命令行都必须以【1】号开始. 答案: =======(答案1)======= # ━━━━━━━━━━━━━━━━━ 二、单项选择共20题(共计40分) ━━━━━━━━━━━━━━━━━ 第1题(2.0分)题号:464 以下描述中,正确的是()。 A:预处理是指完成宏替换和文件包含中指定的文件的调用 B:预处理指令只能位于C源文件的开始 C:C源程序中凡是行首以#标识的控制行都是预处理指令 D:预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备答案:C 第2题(2.0分)题号:472 下列程序运行结果为: #define P 3 #define S(a) P*a*a main() {int ar; ar=S(3+5); printf("\n%d",ar); } A:192 B:29 C:27

第11章 结构体与共用体

第十一章结构体与共用体 结构体变量引用规则: (1)不能将一个结构体变量作为一个整体进行输入和输出;只能对结构体变量中的各个成员分别进行输入和输出。“.”是成员(分量)运算符,它在所有的运算符中优先级最高。 (2)若成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。 (3)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。 (4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。 —>是指向运算符,优先级为第一级。 结构体变量所占的内存长度是各成员所占内存长度之和。每个成员分别占有其自己的内存单元。 共用体变量所占的内存长度等于最长的成员的长度。 只先有定义了共用体变量才能引用它,而且不能引用共用体变量,而只能引用共用体变量中的成员。 将一个变量定义为结构体类型:不仅要求指定变量为结构体类型,而且要求指定为某一特定结构体类型。 类型与变量的区别: 定义时先定义结构体类型,然后定义变量。类型不分配空间,变量分配空间。 可以采取以下3种方法定义结构体类型变量: (1)先声明结构体类型再定义变量名 例如:struct student student1, student2; | | | 结构体类型名结构体变量名 (2)在声明类型的同时定义变量;这种形式的定义的一般形式为: struct 结构体名 { 成员表列 }变量名表列; (3) 直接定义结构体类型变量 其一般形式为: struct { 成员表列 }变量名表列; 即不出现结构体名。 引用结构体变量中成员的方式为 结构体变量名.成员名

结构体与共用体小结

结构体与共用体小结 一,结构体得概念与定义 1,结构体得定义 struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }; 这里数据类型可以就是复合类型,例如又就是一个结构体类型,即嵌套; 2,结构体变量得定义 struct 结构体名变量名1,变量名2,,,变量名n; 或: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }结构体变量1,结构体变量2;

或: struct { 数据类型成员名1; 数据类型成员名1; 、、、 }结构体变量1,结构体变量2; 三种方式,第三种方式得话,每次要定义这个类型得结构体变量都要重复得写这一段代码; 其实定义了结构体后,struct 结构体名就就是一种新得类型,上述语句就像声明变量一样; 3,结构体变量得引用 只能对结构体变量中得各个成员分别输出,不能对一个结构体变量作为一个整体输出; 嵌套得结构体类型得引用: 结构体变量名、结构体类型成员名、内嵌结构体得成员名; 4,结构体变量得初始化 struct 结构体名变量名= {初始化数据};

或者在定义得时候就初始化: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }变量名= {初始化数据}; 二,结构体数组 1,结构体数组得定义举例struct stu { int stu_nu; char name[20]; float score; }; struct stu student[5]; 或者: struct stu { int stu_nu;

char name[20]; float score; }student[5]; 或者: struct { int stu_nu; char name[20]; float score; }student[5]; 跟定义结构体变量得三种形式就是一样得,只不过这里每次定义得结构体变量就是一个数组;每一个student[i]都就是struct stu类型得; 2,结构体数组得初始化与引用 略; 三,结构体与指针 1,指向结构体得指针得定义,同上,也就是三种形式; struct employees employee1,*p1; 或者: struct employees

第9章结构体类型与共用体类型习题及答案

第九章结构体类型与公用体类型习题及其答案9-3编写程序,使用结构体类型,输出一年十二个月的英文名称及相应天数。 解:#include "stdio.h" struct date { char month[10] ; int daynumber ; } main() { int i ; date a[12] ={{"January",31},{"February",29},{"March",31},{"Apri al",30},{"May",31},{"June",30},{"july",31},{"August",31}, {"September",30},{"October",31},{"November",30},{"Decembe r",31}} ; for(i=0;i<12;i++); printf("%d 月:%s %d\n",i+1,a[i].month,a[i].daynumber) ; } 思考:如何对结构体变量进行初始化?对结构体变量的引用为何要体现为分量(或成员)的引用? 9-4 编写程序求空间任一点到原点的距离,点用结构体描述。并请考虑求空间中任意两点的距离的程序。 解:#include "stdio.h" #include "math.h" struct point { float x ; float y ; float z ; } void main()

{ double d1,d2,d ; point p1,p2 ; printf("请输入第一个点的坐标:"); scanf("%f,%f,%f",&p1.x,&p1.y,&p1.z); printf("请输入第二个点的坐标:"); scanf("%f,%f,%f",&p2.x,&p2.y,&p2.z); d1=sqrt(p1.x*p1.x+p1.y*p1.y+p1.z*p1.z); d2=sqrt(p2.x*p2.x+p2.y*p2.y+p2.z*p2.z); d=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)+(p 2.z-p1.z)*(p2.z-p1.z)); printf("第一个点到原点的距离:%f\n",d1); printf("第二个点到原点的距离:%f\n",d2); printf("两点间的距离:%f\n",d); } 9-5 编写输入、输出10个朋友数据的通讯录程序,每个朋友数据包括、地址、邮编、、传呼、手机等数据。 解:#include "stdio.h" struct AddressBook { char name[10] ; char address[30] ; char mailnumber[7] ; char telphone[12] ; char byphone[16] ; char movephone[1] ; } void main() { int i ; AddressBook fd[10] ; for(i=0;i<10;i++) {

结构体和共用体习题

习题六 1. 从下列四个选项中选择一个正确的填入括号中。 (1)在说明一个结构体变量时系统分配给它的存储空间是(D)。 A该结构体中第一个成员所需存储空间 B该结构体中最后一个成员所需存储空间 C该结构体中占用最大存储空间的成员所需存储空间 D该结构体中所有成员所需存储空间的总和 (2)在说明一个共用体变量时系统分配给它的存储空间是(D )。 A该共用体中第一个成员所需存储空间 B该共用体中最后一个成员所需存储空间 C该共用体中占用最大存储空间的成员所需存储空间 D该共用体中所有成员所需存储空间的总和 (3)共用体类型在任何给定时刻, (B)。 A所有成员一直驻留在内存中 B只有一个成员驻留在内存中 C部分成员驻留在内存中 D没有成员驻留在内存中 (4)以下定义结构体类型的变量st1,其中不正确的是(A ) A typedef stuct student { int num; int age; }STD; STD st1; B struct student { int num,age; }st1; C struct { int num; float age; }st1; D struct student { int num; int age; }; struct student st1; (5)已知职工记录描述为: struct workers {

int no; char name[20]; char sex; struct { int day; int month; int year; }birth; }; struct workers w; 设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是(C)。 A day=25; month=10; year=1993; B w.day=25w.month=10; w.year=1993; C w.birth.day=25; w.birth.month=10; w.birth.year=1993; D birth.day=25; birth.month=10; birth.year=1993; (6)设有如下定义: struct sk { int a; float b; }data,*p; 若有p=&data;则对data中的a成员的正确引用是(B)。 A (*p).data.a B (*p).a C p->data.a D p.data.a 2.填空 (1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是w[k-1].b、w[k-1].c 、w[k-1].d 。 struct aa { int b; char c; double d; }; struct aa w[10]; int k=3; (2)若有以下说明和定义,则对x.b成员的另外两种引用形式是x->b-> 和p.b. 。 struct st { int a; struct st *b; }*p, x;

c语言结构体用法(转载)

C语言,结构体(struct) 用法 结构(struct) 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 1. 结构说明和结构变量定义 在T urbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为: struct 结构名 { 类型变量名; 类型变量名; ... } 结构变量; 结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和 无值型)。 构成结构的每一个类型变量称为结构成员, 它象数组的元素一样, 但数组中 元素是以下标来访问的, 而结构是按变量名字来访问成员的。

下面举一个例子来说明怎样定义结构变量。 struct string { char name[8]; int age; char sex[2]; char depart[20]; float wage1, wage2, wage3, wage4, wage5; } person; 这个例子定义了一个结构名为string的结构变量person, 如果省略变量名 person, 则变成对结构的说明。用已说明的结构名也可定义结构变量。这样定义 时上例变成: struct string { char name[8]; int age; char sex[2]; char depart[20]; float wage1, wage2, wage3, wage4, wage5; }; struct string person; 如果需要定义多个具有相同形式的结构变量时用这种方法比较方便, 它先作 结构说明, 再用结构名来定义变量。 例如: struct string T ianyr, Liuqi, ...; 如果省略结构名, 则称之为无名结构, 这种情况常常出现在函数内部, 用这 种结构时前面的例子变成:

练习题-第十章 结构体与共用体(有答案)

一、填空题 1.若有如下结构体定义: struct student { int num; float age; char sex; }stud; 则stud所占的内存空间是9 字节。 2.已有定义和语句: union data { int i; char c; float f; }a,*p; p=a; 则对a中成员c的正确访问形式可以是 a.c 或: p->c或:(*p).c。(只需 写出一种) 二、单项选择题: 1.若有下列定义: struct b { float a[5]; double c; int d;}x; 则变量x在内存中所占的字节为下列哪一个:( C ) A.6 B. 10 C. 30 D. 14 2.设有以下说明语句,则下面的叙述不正确的是( C ) struct stu { int a; float b; } stutype; A. struct 是结构体类型的关键字。 B. struct stu 是用户定义的结构体类型。 C. stutype是用户定义的结构体类型名。 D. a和b都是结构体成员名。 3.下面程序的运行结果是( ) #include main( ) { struct date { int year, month, day;

}today; printf(“%d\n”,sizeof(struct date)); } A. 6 B. 8 C. 10 D. 12 4.设有以下说明语句,则下面的叙述正确的是( B ) typedef struct { int a; float b; } stutype; A. stutype是结构体变量名。 B. stutype 是结构体类型名。 C. struct是结构体类型名。 D. typedef struct是结构体类型名。 三、填程序 1.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请填 空。 static struct man { char name[20]; int age; }person[ ]={{“LiMing”,18},{“WangHua”,19},{“ZhangPing”,20}}; main( ) { struct man *p,*q; int old=0; p=person; for(; p age){ q=p; old=p->age ;} printf(“%s %d”, q->name,q->age ); }

结构体与共用体

第十章结构体与共用体 一、选择题 1.在说明一个结构体变量时系统分配给它的存储空间是。(0级) A)该结构体中第一个成员所需存储空间 B)该结构体中最后一个成员所需存储空间 C)该结构体中占用最大存储空间的成员所需存储空间 D)该结构体中所有成员所需存储空间的总和 2.若有以下说明和语句: struct worker { int no; char ﹡name; }work, ﹡p=&work; 则以下引用方式不正确的是。(1级) A) work.no B) (﹡p).no C) p->no D)work->no 3.有如下定义: struct date { int year, month, day; }; struct worklist { char name[20]; char sex; struct date birthday; }person; 对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。 (1级) A) year=1958 B) birthday.year=1958 C) person.birthday.year=1958 D) person.year=1958 4.以下对结构体类型变量的定义中不正确的是。(1级) 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; } student; }std1; struct student std1; 5.设有以下说明语句 struct stu { int a; float b; }stutype; 则下面的叙述不正确的是。(1级) A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 6.C语言结构体类型变量在程序执行期间。(0级) A)所有成员一直驻留在内存中 B)只有一个成员主留在内存中 C)部分成员驻留在内存中

第十一章结构体与共用体

第^一章结构体与共用体教学内容 (1) 结构体的定义与结构体变量; (2) 结构体数组; (3) 结构体指针; ⑷链表; (5) 共用体; (6) 枚举类型; 基本要求 掌握结构体的定义方法及其作用;重点掌握链表及其应用了解共用体的概念及其应用

一、概述 、引入原由 我们前面讲过数组,数组类型中的各个元素的类型是相同的,在日常应用中,仅仅有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是互相联系的。例如:学生的信息(姓名、性别、年龄、成绩、学号)。那么如何实现这种结构呢?采用的是结构体。 女口:struct student { int num; char n ame[20]; char sex; int age; float score; }; 、结构体类型的一般形式 struct 结构体名 {成员表列}; 成员表列:类型名成员名 女口:struct student {int nu m;char sex;}; 二、结构体类型变量的定义、引用、初始化 、定义方法 1、先声明类型再定义变量名 struct stude nt {int nu m;char sex;}; struct stude nt stu1,stu2; 2、在声明类型的同时定义变量 struct stude nt {int nu m;char sex;} stu1,stu2; 3、直接定义结构体类型变量(不给出结构体名) struct {int nu m;char sex;} stu1,stu2; 4、说明: 1 )类型与变量不同(变量:分配空间,可以赋值、存储、运算) 2)成员与普通变量地位相当,域名可以单独使用 3)成员也可以是一个结构体变量 如: struct date

结构体与联合体习题含答案

2013年结构体与联合体习题 选择题 1、若程序中有以下的说明和定义: struct abc { int x;char y; } 花括号后少了分号。 struct abc s1,s2; 则会发生的情况是______。 A) 编译时错B) 程序将顺序编译、连接、执行 C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连 接出错 2、有以下程序段 struct st { int x; int *y;}*pt; int a[]={1,2};b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c; 以下选项中表达式的值为11的是 A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x 3、有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}}; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是______。 A) (p++)->num B) p->num C) (*p).num D) stu[3].age 4、设有如下枚举类型定义 enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran}; 枚举量Fortran的值为______。 A) 4 B) 7 C) 102 D) 103 5、以下叙述中错误的是_________。 A)可以通过typedef增加新的类型 B)可以用typedef将已存在的类型用一个新的名字来代表 C)用typedef定义新的类型名后,原有类型名仍有效 D)用typedef可以为各种类型起别名,但不能为变量起别名 6、有以下程序段 typedef struct NODE

结构体与共用体小结

结构体与共用体小结 一,结构体的概念和定义 1,结构体的定义 struct 结构体名 { 数据类型成员名1; 数据类型成员名1; ... }; 这里数据类型可以是复合类型,例如又是一个结构体类型,即嵌套; 2,结构体变量的定义 struct 结构体名变量名1,变量名2,,,变量名n; 或: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; ... }结构体变量1,结构体变量2;

或: struct { 数据类型成员名1; 数据类型成员名1; ... }结构体变量1,结构体变量2; 三种方式,第三种方式的话,每次要定义这个类型的结构体变量都要重复的写这一段代码; 其实定义了结构体后,struct 结构体名就是一种新的类型,上述语句就像声明变量一样; 3,结构体变量的引用 只能对结构体变量中的各个成员分别输出,不能对一个结构体变量作为一个整体输出; 嵌套的结构体类型的引用: 结构体变量名.结构体类型成员名.嵌结构体的成员名; 4,结构体变量的初始化 struct 结构体名变量名= {初始化数据};

或者在定义的时候就初始化:struct 结构体名 { 数据类型成员名1; 数据类型成员名1; ... }变量名= {初始化数据}; 二,结构体数组 1,结构体数组的定义举例struct stu { int stu_nu; char name[20]; float score; }; struct stu student[5]; 或者: struct stu { int stu_nu;

char name[20]; float score; }student[5]; 或者: struct { int stu_nu; char name[20]; float score; }student[5]; 跟定义结构体变量的三种形式是一样的,只不过这里每次定义的结构体变量是一个数组;每一个student[i]都是struct stu类型的; 2,结构体数组的初始化和引用 略; 三,结构体与指针 1,指向结构体的指针的定义,同上,也是三种形式; struct employees employee1,*p1; 或者: struct employees

c语言结构体与共用体之间的区别

https://www.doczj.com/doc/5e1256795.html,/2005/03/25/12365.html 所谓共用体类型是指将不同的数据项组织成一个整体,它们在内存中占用同一段存储单元。其定义形式为: union 共用体名 {成员表列}; 7.5.1 共用体的定义 union data { int a ; float b ; d o u b l e c ; c h a r d ; } obj; 该形式定义了一个共用体数据类型union data ,定义了共用体数据类型变量o b j。共用体 数据类型与结构体在形式上非常相似,但其表示的含义及存储是完全不同的。先让我们看一个小例子。 [例7 - 8 ] union data /*共用体* / { int a; float b; double c; char d; } m m ; struct stud /*结构体* / { int a; float b; double c; char d; } ; m a i n ( ) { struct stud student printf("%d,%d",sizeof(struct stud),sizeof(union data)); } 程序的输出说明结构体类型所占的内存空间为其各成员所占存储空间之和。而形同结构体的

共用体类型实际占用存储空间为其最长的成员所占的存储空间。详细说明如图7 - 6所示。 对共用体的成员的引用与结构体成员的引用相同。但由于共用体各成员共用同一段内存 空间,使用时,根据需要使用其中的某一个成员。从图中特别说明了共用体的特点,方便程序设计人员在同一内存区对不同数据类型的交替使用,增加灵活性,节省内存。 7.5.2 共用体变量的引用 可以引用共用体变量的成员,其用法与结构体完全相同。若定义共用体类型为: union data /*共用体* / { int a; float b; double c; char d; } m m ; 其成员引用为:m m . a , m m . b , m m . c , m m . d 但是要注意的是,不能同时引用四个成员,在某一时刻,只能使用其中之一的成员。 [例7-9] 对共用体变量的使用。 m a i n ( ) { union data { int a; float b; double c; char d; } m m ; m m . a = 6 ; printf("%d\n",mm.a); m m . c = 6 7 . 2 ; p r i n t f ( " % 5 . 1 l f \ n " , m m . c ) ; m m . d = ' W ' ; m m . b = 3 4 . 2 ; p r i n t f ( " % 5 . 1 f , % c \ n " , m m . b , m m . d ) ; }

C语言结构体和共用体实验报告

实验九参考程序 实验 9- 1 /**************************************************************** * 实验 9.1 * * ( 1 )为某商店的商品设计合适的结构体 (PRODUCT) 。每一种商品包含编号 (number) 、 * 名称 (name) 、价格 (price) 、折扣 (discount)4 项信息,根据表 9-1 ,为这些信 息选择合适的数据类型。 * (2)建立 2个函数,以实现对商品的操作。 input 函数实现商品的输入; * display 函数显示商品信息。要求这 2个函数都以商品的结构体 (PRODUCT) 指针为 参数。 * (3 )在主函数中为商品键盘定义一个结构体变量 (keyboard) ,利用 input 函数实现键 盘信息的输入; * 定义一个结构体数组 (elec_device[3]) ,利用 input 函数实现冰箱、 空调、电视 信息的输入; * 最后利用 display 函数显示 4 种商品的信息。 * * 表 9-1 #include typedef struct _PRODUCT int iNumber; char strName[32]; float fPrice; float fDiscount; * 编号 名称 价格 折扣 *1010 键盘 89.50 0.85 *1021 冰箱 1024.00 0.95 *1022 空调 2058.50 0.90 *1023 电视 3001.88 0.95 *************************************************************** */

十一章 结构体与共用体

结构体与共用体 一、选择题: 1.已知赋值语句wang.year=2004;则wang的变量类型是() A. 字符或文件 B. 整型或实型 C. 共用或结构 D. 实型或指针 2.Turbo C中,以下类型数据在存储器中占的字节数为 ( ) struct test { int x; float y; char z; } ; A. 2 B. 3 C. 6 D. 7 3.以下语句中,成员data的正确引用方式为( ) struct node { int data; char name[10]; }stree; struct node *p=&stree; A. p.data B. p->data C. (*p)->data D. stree->data 4、当执行以下程序段时,输出的结果是。()struct data { char a; int b; float c; }; printf(“%d”, sizeof(struct data)); A. 1 B. 2 C. 4 D. 7 5.下面程序段的运行结果是。 struct stu { int num; char name[10]; float scrose ; }; printf(“%d\n”, sizeof (struct stu )); (A)14 (B)12 (C)16 (D)3 6. 若有定义: 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.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数。在这种情况下,由于涉及到结构体参数的拷贝,程序空间及时间效率都会受到影响,所以这种方法基本不用。 例如: 2.传指针时直接将结构体的首地址传递给函数体,在函数体中通过指针引用结构体成员,可以对结构体参数成员的值造成实际影响。这种用法效率高,经常采用。 例如: 二、结构体与函数返回值 对于某些版本的C语言编译器,返回值仅能为基本数据类型如int、char以及指针,因此结构体作为一种组合数据类型,不能以值的方式返回,而在有些版本的C编译器中又可以直接返回结构体变量,在C++中也是可以直接返回结构体变量的。 直接返回结构体变量示例如下;

以指针方式返回结构体示例如下: 关于结构体,看内核又遇到了,关于赋值中存在·的奇怪用法,在网上没有找到答案,却把以前一直弄的比较模糊的对齐问题给翻出来了。如下为转发内容: 齐原则总结:(在没有#pragma pack宏的情况下): 原则1:数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。 原则2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部

结构体、共用体、枚举

最终排名 Time Limit: 1000MS Memory limit: 65536K 题目描述 第四届山东理工大学ACM网络编程擂台赛比赛完后需要产生一个最终排名,排名按照题数多少来决定。但是有太多的队伍参与,手动计算排名已经不能满足比赛的需求。现在有一份名单记录各个队伍的ID和做出的题目数,需要你写一个程序,产生最终的排名。 为了简化题目,这里的排名规则为:做出题目数量多的队伍排在前面,如果题数相等,保持输入时的相对顺序不要改变。 输入 第一行包含一个正整数T( 1≤T≤15),表示有T组测试数据。每组数据第一行有一个正整数N(1< N≤10000),表示队伍数量。接下来N 行包含两个整数,1≤ID≤10^7, 0≤M≤100。ID为队伍的编号,M为做出的题数。 输出 每组数据输出包含N行,第i行有两个整数,ID和M表示排在第i位的队伍的ID和做出的题数。 示例输入 1 8 1 2 16 3 11 2 20 3 3 5 26 4 7 1 22 4 示例输出 3 5 26 4 22 4

16 3 20 3 1 2 11 2 7 1

#include void main() { struct team { int ID; int M; }t[10000],T; int N,n,i,j,k,time=0; scanf("%d",&N); while(time!=N) { scanf("%d",&n); for(i=0;i

结构体及位操作习题

(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a; B)struct ord {int x;int y;int z;} struct ord a; C)struct ord {int x;int y;int z;} a; D)struct {int x;int y;int z;} a; (38)有以下程序 #include #include struct A { int a; char b[10]; double c;}; struct A f(struct A t); main() { struct A a={1001,”ZhangDa”,1098.0}; a=f(a);printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c); } struct A f(struct A t) ( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202. 0;return t; ) 程序运行后的输出结果是 A)1001,ZhangDa,1098.0 B)1001,ZhangDa,1202.0 C)1001,ChangRong,1098.0 D)1001,ChangRong,1202.0 (39)若有以下程序段 int r=8; printf(“%d\n”,r>>1); 输出结果是 A)16 B)8 C)4 D)2 (12)设有定义: struct person { int ID;char name[12];}p; 请将scanf(“%d”, 【12】);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。 (14)有以下程序#include typedef struct { int num;double s}REC; void fun1( REC x ){x.num=23;x.s=88.5;} main() { REC a={16,90.0 }; fun1(a); printf(“%d\n”,a.num); } 程序运行后的输出结果是【14】。(37) 有以下程序 #include struct ord { int x,y; } dt[2]={1,2,3,4}; main() { struct ord *p=dt; printf("%d,",++p->x); printf("%d\n",++p->y); } 程序的运行结果是 A)1,2 B)2,3 C)3,4 D)4,1 (39)有以下程序 #include main() { int a=5,b=1,t; t=(a<<2)|b; printf("%d\n",t); } 程序运行后的输出结果是 A)21 B)11 C)6 D)1 (33)有以下程序 #include struct st { int x, y;) data[2]={l,10,2,20}; main() { struct st *p=data; printf("%d,", p->y); printf("%d\n",(++p)->x); }

电子技术第十章结构体与共用体

第十章结构体与共用体 、选择题 1?在说明一个结构体变量时系统分配给它的存储空间是___________ 。(0级)A该结构体中第一个成员所需存储空间 B)该结构体中最后一个成员所需存储空间 C)该结构体中占用最大存储空间的成员所需存储空间 D)该结构体中所有成员所需存储空间的总和 2?若有以下说明和语句: struct worker { int no; char * name; }work, * p=&work; 则以下引用方式不正确的是。(1级) A)work . no B) ( * p). no C) p->no D)work->no3.有如下定义: struct date { int year, mon th, day; }; struct worklist { char n ame[20]; char sex; struct date birthday; }pers on; 对结构体变量person的出生年份进行赋值时, (1级) A) year=1958 C) person. birthday . year=1958 4.以下对结构体类型变量的定义中不正确的是A) #define STUDENT struct student STUDENT { int num; float age; }std1; C) struct { int num; float age; }std1; 5.设有以下说明语句 struct stu { int a; float b; }stutype; 则下面的叙述不正确的是_____________ A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 6.C语言结构体类型变量在程序执行期间 A)所有成员一直驻留在内存中 B)只有一个成员主留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 下面正确的赋值语句是 _______________ B)birthday . year=1958 D) person. year=1958 ___________ 。(1 级) B)struct stude nt { int num; float age; }std1; D) struct { int num; float age; } stude nt; struct stude nt std1; (1级)

第9章 结构体与共用体

第9章结构体与共用体 一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。) 11.1 C语言结构体类型变量在程序运行期间 A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元 B)所有的成员一直驻留在内存中 C)只有最开始的成员驻留在内存中 D)部分成员驻留在内存中 考生答案: 正确答案: B 11.2 下列各数据类型不属于构造类型的是 A)枚举型 B)共用型 C)结构型 D)数组型 考生答案: 正确答案: A 11.3 当说明一个结构体变量时系统分配给它的内存是 A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 考生答案: 正确答案: A 11.4 设有以下说明语句 typedef struct { int n; char ch[8]; } PER; 则下面叙述中正确的是 A)PER 是结构体变量名 B)PER是结构体类型名 C)typedef struct 是结构体类型 D)struct 是结构体类型名 考生答案: 正确答案: B 11.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 考生答案: 正确答案: B 11.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 考生答案: 正确答案: A 11.7 设有如下定义: struck sk { int a; float b;

相关主题
文本预览
相关文档 最新文档