c语言第13讲结构体与共用体课件_第1页
c语言第13讲结构体与共用体课件_第2页
c语言第13讲结构体与共用体课件_第3页
c语言第13讲结构体与共用体课件_第4页
c语言第13讲结构体与共用体课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言第13讲结构体与共用体第第13讲讲 结构体与共用体结构体与共用体为将不同数据类型、但相互关联的一组数据,组合为将不同数据类型、但相互关联的一组数据,组合成一个有机整体使用,成一个有机整体使用,C语言提供一种称为语言提供一种称为“结构结构”的的数据结构数据结构。13.1 结构类型与结构变量的定义结构类型与结构变量的定义 13.2 结构变量的引用与初始化结构变量的引用与初始化 13.3 结构数组结构数组13.4 指向结构类型数据的指针指向结构类型数据的指针13.5 共用型和枚举型共用型和枚举型13.6 定义已有类型的别名定义已有类型的别名c语言第13讲结构体与共用体13.1 结构类型与结构变

2、量的定义结构类型与结构变量的定义C语言中的结构类型,相当于其它高级语言中的语言中的结构类型,相当于其它高级语言中的“记录记录”类型。类型。struct 结构类型名结构类型名 /* struct是结构类型关键字是结构类型关键字*/ 数据类型数据类型 数据项数据项1; 数据类型数据类型 数据项数据项2; 数据类型数据类型 数据项数据项; ;/* 此行分号不能少!此行分号不能少!*/ 案例案例13.1 定义一个反映学生基本情况的结构类型,用以存储学生定义一个反映学生基本情况的结构类型,用以存储学生的相关信息。的相关信息。c语言第13讲结构体与共用体struct date /*日期结构类型:由年、月、

3、日三项组成日期结构类型:由年、月、日三项组成*/ int year; int month; int day; ;struct std_info/*学生信息结构类型:由学号、姓名、性别和生日共学生信息结构类型:由学号、姓名、性别和生日共4项组成项组成*/ char no7; char name9; char sex3; struct date birthday; ; struct score/*成绩结构类型:由学号和三门成绩共成绩结构类型:由学号和三门成绩共4项组成项组成*/ char no7; int score1; int score2; int score3; ; c语言第13讲结构体与共

4、用体(1)“结构类型名结构类型名”和和“数据项数据项”的命名规则,与变量名相同。的命名规则,与变量名相同。(2)数据类型相同的数据项,既可逐个、逐行分别定义,也可合并成)数据类型相同的数据项,既可逐个、逐行分别定义,也可合并成一行定义。一行定义。 例如,本案例代码中的日期结构类型,也可改为如下形式:例如,本案例代码中的日期结构类型,也可改为如下形式: struct date int year, month, day; ;(3)结构类型中的数据项,既可以是基本数据类型,也允许是另一个)结构类型中的数据项,既可以是基本数据类型,也允许是另一个已经定义的结构类型。已经定义的结构类型。 例如,本案例代

5、码中的结构类型例如,本案例代码中的结构类型std_info,其数据项,其数据项“birthday”就是一就是一个已经定义的日期结构类型个已经定义的日期结构类型date。(4)将个)将个数据项数据项称为结构类型的个称为结构类型的个成员成员(或(或分量分量)。)。c语言第13讲结构体与共用体13.1.2 结构变量定义结构变量定义用户自己定义的结构类型,与系统定义的标准类型(用户自己定义的结构类型,与系统定义的标准类型(int、char等)一样,可用来定义结构变量的类型。等)一样,可用来定义结构变量的类型。 1.定义结构变量的方法,可概括为两种:定义结构变量的方法,可概括为两种:(1) 间接定义法间

6、接定义法先定义结构类型、再定义结构变量先定义结构类型、再定义结构变量例如,利用例如,利用案例案例10.1中定义的学生信息结构类型中定义的学生信息结构类型std_info,定,定义了一个相应的结构变量义了一个相应的结构变量student: struct std_info student;结构变量结构变量student:拥有结构类型的全部成员,其中:拥有结构类型的全部成员,其中birthday成成员是一个日期结构类型,它又由员是一个日期结构类型,它又由3个成员构成。个成员构成。注意:使用间接定义法定义结构变量时,必须同时指定结构类注意:使用间接定义法定义结构变量时,必须同时指定结构类型名。型名。c

7、语言第13讲结构体与共用体(2) 直接定义法直接定义法在定义结构类型的同时,定义结构变量在定义结构类型的同时,定义结构变量例如,结构变量例如,结构变量student的定义可以改为如下形式:的定义可以改为如下形式:struct std_info student;同时定义结构类型及其结构变量的一般格式如下:同时定义结构类型及其结构变量的一般格式如下: struct 结构类型名结构类型名 结构变量表;结构变量表;2.说明说明(1)结构类型与结构变量是两个不同的概念,其区别如同)结构类型与结构变量是两个不同的概念,其区别如同int类类型与型与int型变量的区别一样。型变量的区别一样。(2)结构类型中的

8、成员名,可以与程序中的变量同名,它们代)结构类型中的成员名,可以与程序中的变量同名,它们代表不同的对象,互不干扰。表不同的对象,互不干扰。c语言第13讲结构体与共用体13.2 结构变量的引用与初始化结构变量的引用与初始化案例案例13.2 利用利用案例案例13.1中定义的结构类型中定义的结构类型struct std_info,定义一,定义一个结构变量个结构变量student,用于存储和显示一个学生的基本情况。,用于存储和显示一个学生的基本情况。#include #include struct.h/*定义并初始化一个外部结构变量定义并初始化一个外部结构变量student */struct std_

9、info student=000102,张三张三,男男,1980,9,20;main() printf(No: %sn,student.no); printf(Name: %sn,); printf(Sex: %sn,student.sex); printf(Birthday: %d-%d-%dn,student.birthday.year, student.birthday.month, student.birthday.day);c语言第13讲结构体与共用体程序运行结果:程序运行结果:No: 000102Name: 张三张三Sex: 男男Birthday:1980-9-20 1.结构变量的

10、引用规则结构变量的引用规则对于结构变量,要通过对于结构变量,要通过成员运算符成员运算符“.”,逐个访问其成员,且,逐个访问其成员,且访问的格式为:访问的格式为:结构变量结构变量.成员成员 /*其中的其中的“.”是成员运算符是成员运算符*/例如,案例中的例如,案例中的student.no,引用结构变量,引用结构变量student中的中的no成员;成员;引用结构变量引用结构变量student中的中的name成员,等等。成员,等等。c语言第13讲结构体与共用体如果某成员本身又是一个结构类型,则只能通过多级的分量运算,如果某成员本身又是一个结构类型,则只能通过多级的分量运算,对最低一级的成员进行引用。

11、对最低一级的成员进行引用。此时的引用格式扩展为:此时的引用格式扩展为: 结构变量结构变量.成员成员.子成员子成员.最低最低1级子成员级子成员例如,引用结构变量例如,引用结构变量student中的中的birthday成员的格式分别为:成员的格式分别为:student.birthday.yearstudent.birthday.monthstudent.birthday.day(1) 对最低一级成员,可像同类型的普通变量一样,进行相应的各对最低一级成员,可像同类型的普通变量一样,进行相应的各种运算。种运算。(2) 既可引用结构变量成员的地址,也可引用结构变量的地址。既可引用结构变量成员的地址,也可

12、引用结构变量的地址。例如,例如,& ,&student 。c语言第13讲结构体与共用体2.结构变量的初始化结构变量的初始化结构变量初始化的格式,与一维数组相似:结构变量初始化的格式,与一维数组相似: 结构变量结构变量=初值表初值表不同的是:如果某成员本身又是结构类型,则该成员的初不同的是:如果某成员本身又是结构类型,则该成员的初值为一个初值表。值为一个初值表。例如,例如,案例案例10.2中的中的struct std_info student=000102, 张三张三, 男男, 1980,9,20;注意:注意:初值的数据类型,应与结构变量中相应成员所要求初值的数据类型,应与结构变

13、量中相应成员所要求的一致,否则会出错。的一致,否则会出错。c语言第13讲结构体与共用体13.3 结构数组结构数组 结构数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员。结构数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员。案例案例13.3 利用利用案例案例13.1中定义的结构类型中定义的结构类型struct std_info,定义一个结构数组,定义一个结构数组student,用于存储和显示三个学生的基本情况。,用于存储和显示三个学生的基本情况。#include #include struct.h/*定义并初始化一个外部结构数组定义并初始化一个外部结构数组student3

14、 */struct std_info student3=“000102”,“张三张三”,“男男”,1980,9,20, “000105”,“李四李四”,“男男”,1980,8,15, “000112”,“王五王五”,“女女”,1980,3,10 ;main() int i;for(i=0; ino); printf(Name: %sn, p-name); printf(Sex: %sn, p-sex); printf(Birthday: %d-%d-%dn, p-birthday.year, p-birthday.month, p-birthday.day); c语言第13讲结构体与共用体通过

15、指向结构变量的指针来访问结构变量的成员,与直接使用通过指向结构变量的指针来访问结构变量的成员,与直接使用结构变量的效果一样。一般地说,结构变量的效果一样。一般地说,如果指针变量如果指针变量pointer已指向结构已指向结构变量变量var,则以下三种形式等价:,则以下三种形式等价:(1)var.成员成员(2)pointer-成员成员(3)(*pointer).成员成员 /* “*pointer”外面的括号不能省!外面的括号不能省!*/注意:在格式(注意:在格式(1)中,分量运算符左侧的运算对象,只能是)中,分量运算符左侧的运算对象,只能是结构变量,;而在格式(结构变量,;而在格式(2)中,指向运

16、算符左侧的运算对象,只能)中,指向运算符左侧的运算对象,只能是指向结构变量(或结构数组)的指针变量,否则都出错。是指向结构变量(或结构数组)的指针变量,否则都出错。思考题:如果要求从键盘上输入结构变量思考题:如果要求从键盘上输入结构变量student的各成员数据,的各成员数据,如何修改程序?如何修改程序?c语言第13讲结构体与共用体13.4.2 指向结构数组的指针指向结构数组的指针案例案例10.5 使用指向结构数组的指针来访问结构数组。使用指向结构数组的指针来访问结构数组。#includestruct.h/*定义并初始化一个外部结构数组定义并初始化一个外部结构数组student */struc

17、t std_info student3=000102,张三张三,男男,1980,5,20, 000105,李四李四,男男,1980,8,15, “000112”,“王五王五”,“女女”,1980,3,10 ;main() struct std_info *p=student; int i=0;/*输出结构数组内容输出结构数组内容*/for( ; ino, p-name, p-sex); printf(%4d-%2d-%2dn, p-birthday.year,p-birthday.month,p-birthday.day); 如果指针变量如果指针变量p已指向某结构数组,则已指向某结构数组,则p

18、+1指向结构数组的下一个元素,而指向结构数组的下一个元素,而不是当前元素的下一个成员。不是当前元素的下一个成员。另外,如果指针变量另外,如果指针变量p已经指向一个结构变量(或结构数组),就不能再使已经指向一个结构变量(或结构数组),就不能再使之指向结构变量(或结构数组元素)的某一成员。之指向结构变量(或结构数组元素)的某一成员。c语言第13讲结构体与共用体13.4.3 指向结构数据的指针作函数参数指向结构数据的指针作函数参数案例案例13.6 编写一个显示函数编写一个显示函数display(),通过主函数调用来实现显示。,通过主函数调用来实现显示。#includestruct.h/*定义并初始化

19、一个外部结构数组定义并初始化一个外部结构数组student */struct std_info student3=000102,张三张三,男男,1980,5,20, 000105,李四李四,男男,1980,8,15, “000112”,“王五王五”,“女女”,1980,3,10 ;main() void display();/*函数说明函数说明*/ int i=0; /*打印表头打印表头*/ printf(No.NameSexBirthdayn);for( ; ino, p_std-name, p_std-sex); printf(%4d-%2d-%2dn, p_std-birthday.ye

20、ar, p_std-birthday.month, p_std-birthday.day);c语言第13讲结构体与共用体13.5 共用型和枚举型简介共用型和枚举型简介13.5.1 共用型共用型 1概念概念 使几个不同的变量占用同一段内存空间的结构称为共用型。使几个不同的变量占用同一段内存空间的结构称为共用型。 2共用类型的定义共用类型的定义与结构类型的定义类似与结构类型的定义类似 union 共用类型名共用类型名 成员列表成员列表; 3共用变量的定义共用变量的定义与结构变量的定义类似与结构变量的定义类似(1) 间接定义间接定义先定义类型、再定义变量先定义类型、再定义变量例如,定义例如,定义da

21、ta共用类型变量共用类型变量un1,un2,un3的语句如下:的语句如下: union data un1,un2,un3;c语言第13讲结构体与共用体(2) 直接定义直接定义定义类型的同时定义变量定义类型的同时定义变量例如,例如,union data int i; char ch; float f; un1, un2, un3; 共用变量占用的内存空间,等于最长成员的长度,而不是各成员长度共用变量占用的内存空间,等于最长成员的长度,而不是各成员长度之和。之和。例如,共用变量例如,共用变量un1、un2和和un3,在,在16位操作系统中,占用的内存空位操作系统中,占用的内存空间均为字节(不是间均

22、为字节(不是2+1+4=7字节)。字节)。共用变量的引用共用变量的引用与结构变量一样,也只能逐个引用共用变量与结构变量一样,也只能逐个引用共用变量的成员的成员例如,访问共用变量例如,访问共用变量un1各成员的格式为:各成员的格式为:un1.i、un1.ch、un1.f。c语言第13讲结构体与共用体5特点特点(1) 系统采用覆盖技术,实现共用变量各成员的内存共享,所系统采用覆盖技术,实现共用变量各成员的内存共享,所以以在某一时刻,存放的和起作用的是最后一次存入的成员值。在某一时刻,存放的和起作用的是最后一次存入的成员值。例如,执行例如,执行un1.i=1, un1.ch=c, un1.f=3.1

23、4后,后,un1.f才是有效才是有效的成员。的成员。(2) 由于所有成员共享同一内存空间,故共用变量与其各成员由于所有成员共享同一内存空间,故共用变量与其各成员的地址相同。的地址相同。例如,例如,un1un1.iun1.chun1.f。(3) 不能对共用变量进行初始化(注意:结构变量可以);也不能对共用变量进行初始化(注意:结构变量可以);也不能将共用变量作为函数参数,以及使函数返回一个共用数据,但不能将共用变量作为函数参数,以及使函数返回一个共用数据,但可以使用指向共用变量的指针。可以使用指向共用变量的指针。(4) 共用类型可以出现在结构类型定义中,反之亦然。共用类型可以出现在结构类型定义中

24、,反之亦然。c语言第13讲结构体与共用体#include union un int a;int b;int c; u1;main()u1.a=15;u1.b =20;u1.c=u1.a+u1.b;printf(%d,%d,%d,u1.a,u1.b,u1.c); c语言第13讲结构体与共用体13.5.2 枚举型枚举型1枚举类型的定义枚举类型的定义 enum 枚举类型名枚举类型名 取值表取值表;例如,例如,enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat;枚举变量的定义枚举变量的定义与结构变量类似与结构变量类似(1) 间接定义间接定义例如,例如,enum week

25、days workday;(2) 直接定义直接定义例如,例如,enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat workday;说明说明(1) 枚举型仅适应于取值有限的数据。枚举型仅适应于取值有限的数据。例如:例如:1周的周的7天,天,1年的年的12个月。个月。(2) 取值表中的值称为枚举元素,其含义由程序解释。取值表中的值称为枚举元素,其含义由程序解释。例如,不是因为写成例如,不是因为写成“Sun”就自动代表就自动代表“星期天星期天”。事实上,。事实上, 枚举元素用什么表示都可以。枚举元素用什么表示都可以。c语言第13讲结构体与共用体(3) 枚举元素作为常量

26、是有值的枚举元素作为常量是有值的定义时的顺序号(从开定义时的顺序号(从开始),所以枚举元素可以进行比较,比较规则是:序号大者为大!始),所以枚举元素可以进行比较,比较规则是:序号大者为大!例如,上例中的例如,上例中的Sun=0、Mon=1、Sat=6,所以,所以MonSun、Sat最大。最大。(4) 枚举元素的值也是可以人为改变的:在定义时由程序指定。枚举元素的值也是可以人为改变的:在定义时由程序指定。例如,如果例如,如果enum weekdays Sun=, Mon ,Tue, Wed, Thu, Fri, Sat;则则Sun=,Mon=,从,从Tue=2开始,依次增。开始,依次增。Retu

27、rnc语言第13讲结构体与共用体13.6 定义已有类型的别名定义已有类型的别名除可直接使用提供的除可直接使用提供的标准类型标准类型和和自定义的类型自定义的类型(结构、共用、枚举)(结构、共用、枚举)外,也可使用外,也可使用typedef定义已有类型的别名定义已有类型的别名。该别名与标准类型名一样,可。该别名与标准类型名一样,可用来定义相应的变量。用来定义相应的变量。 定义已有类型别名的方法如下:定义已有类型别名的方法如下: (1)按定义变量的方法,写出定义体;)按定义变量的方法,写出定义体; (2)将变量名换成别名;)将变量名换成别名; (3)在定义体最前面加上)在定义体最前面加上typede

28、f。 案例案例13.10 给实型给实型float定义定义1个别名个别名REAL。 (1)按定义实型变量的方法,写出定义体:)按定义实型变量的方法,写出定义体:float f; (2)将变量名换成别名:)将变量名换成别名: float REAL; (3)在定义体最前面加上)在定义体最前面加上typedef:typedef float REAL;c语言第13讲结构体与共用体案例案例13.10 给如下所示的结构类型给如下所示的结构类型struct date定义定义1个别名个别名DATE。struct date int year, month, day; ;(1) 按定义结构变量的方法,写出定义体:按

29、定义结构变量的方法,写出定义体:struct date d;(2) 将变量名换成别名:将变量名换成别名: struct date DATE;(3) 在定义体最前面加上在定义体最前面加上typedef: typedef struct date DATE;说明:说明:(1)用)用typedef只是给已有类型增加个别名,并不能创造个新只是给已有类型增加个别名,并不能创造个新的类型。就如同人一样,除学名外,可以再取一个小名(或雅号),但的类型。就如同人一样,除学名外,可以再取一个小名(或雅号),但并不能创造出另一个人来。并不能创造出另一个人来。(2)typedef与与#define有相似之处,但二者是

30、不同的:前者是由编有相似之处,但二者是不同的:前者是由编译器在编译时处理的;后者是由编译预处理器在编译预处理时处理的,译器在编译时处理的;后者是由编译预处理器在编译预处理时处理的,而且只能作简单的字符串替换。而且只能作简单的字符串替换。Returnc语言第13讲结构体与共用体2007年4月1、有以下程序、有以下程序typedef structint b,p;A; void f(A c) /*注意:注意:c是结构变量名是结构变量名 */ int j; c.b+=1; c.p+=2;main()int i; A a=1,2; f(a); printf(“%d,%dn”,a.b,a.p);程序运行后

31、的输出结果是程序运行后的输出结果是( ) A)2,3 B)2,4 C)1,4 D)1,2结构体变量做形参,传递方式是值传递c语言第13讲结构体与共用体2007年4月2、有以下程序、有以下程序struct S int n; int a20;void f(struct S *p)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(p-aip-aj) t=p-ai; p-ai=p-aj; p-aj=t; main()int i; struct S s=10,2,3,1,6,8,7,5,4,10,9;f(&s);for (i=0;i s.n; i+) pr

32、intf(“%d”,s.ai);程序运行后的输出结果是程序运行后的输出结果是( )A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)2,3,1,6,8,7,5,4,10,9, D)10,9,8,7,6,1,2,3,4,5,c语言第13讲结构体与共用体2007年4月3、有以下程序、有以下程序struct S int n; int a20; ;void f(int *a,int n)int i; for(i=0;in-1;i+) ai+=i;main()int i; struct S s=10,2,3,1,6,8,7,5,4,10,9;f(s.a,

33、 s.n);for(i=0;is.n; i+) printf(“%d”,s.ai);程序运行后的输出结果是程序运行后的输出结果是( )A)2,4,3,9,12,12,11,11,18,9, B)3,4,2,7,9,8,6,5,11,10, C)2,3,1,6,8,7,5,4,10,9, D)1,2,3,6,8,7,5,4,10,9,c语言第13讲结构体与共用体2007年4月4、有以下程序段、有以下程序段typedef struct node int data; struct node *next; *NODE;NODE p;以下叙述正确的是以下叙述正确的是( )A)p是指向是指向struct

34、node结构变量的指针的指针结构变量的指针的指针B)NODE p;语句出错;语句出错C)p是指向是指向struct node结构变量的指针结构变量的指针D)p是是struct node结构变量结构变量c语言第13讲结构体与共用体2007年4月5、设有说明、设有说明struct DATEint year;int month; int day;请写出一条定义语句,该语句定义请写出一条定义语句,该语句定义d为上述结构体变量,并同时为其为上述结构体变量,并同时为其成员成员year、month、day 依次赋初值依次赋初值2006、10、1:_struct DATA d=2006,10,1; c语言第1

35、3讲结构体与共用体2007年9月1、以下关于、以下关于typedef的叙述错误的是:的叙述错误的是:A)用)用typedef可以增加新类型可以增加新类型B) typedef只是将已存在的类型用一个新的名字来代表只是将已存在的类型用一个新的名字来代表C) 用用typedef可以为各种类型说明一个新名,但不能用来为变量说可以为各种类型说明一个新名,但不能用来为变量说明一个新名明一个新名D)用)用typedef为类型说明一个新名,通常可以增加程序的可读性为类型说明一个新名,通常可以增加程序的可读性2、 设有以下定义:设有以下定义: union data int d1;float d2; demo;

36、则下列叙述中错误的是:则下列叙述中错误的是:A)变量)变量demo与成员与成员d2所占的内存字节数相同所占的内存字节数相同B)变量)变量demo中各成员的地址相同中各成员的地址相同C)变量)变量demo和各成员的地址相同和各成员的地址相同D)若给若给demo.d1赋赋 99后,后,demo.d2中的值是中的值是99.0demo.d1是整型,在内存中以整型数据存储。而demo.d2是以浮点数据类型存储,存储规则不同,从内存读出时按照浮点数据类型读出,不可能是99.0。浮点数据内存中存储前面是小数部分,中间为E,后面是指数部分 c语言第13讲结构体与共用体2008年4月1、有以下程序段、有以下程序

37、段#include #include typedef struct char name9;char sex;float score2;STU;void f(STU a)STU b=“Zhao”,m,85.0,90.0; int i;strcp,);a.sex=b.sex;for (i=0;i2;i+)a.scorei=b.scorei;main()STU c=“Qian”,f,95.0,92.0; f( c); printf(“%s,%c,%2.0f,%2.0fn”,,c.sex,c.score0,c.score1);程序的运行结果是程序的运行结果是A)Qian, f,

38、 95, 92B)Qian, m, 85, 90C)Zhao, f, 95, 92D)Zhao, m, 85,90c语言第13讲结构体与共用体2009-9(3636)下面结构体的定义语句中,错误的是()下面结构体的定义语句中,错误的是( )。)。A A)struct ord int x; int y; int z; struct ord a; struct ord int x; int y; int z; struct ord a; B B)struct ord int x; int y; int z; struct ord a; struct ord int x; int y; int z;

39、 struct ord a; C C)struct ord int x; int y; int z;a; struct ord int x; int y; int z;a; D D)struct int x; int y; int z; a; struct int x; int y; int z; a; c语言第13讲结构体与共用体(38)有以下程序)有以下程序# include # include Struct A int a; char b10; double c; struct A f(struct A t); main() struct A a=1001,ZhangDa,1098.0;

40、 a=f(a); printf(%d,%s,%6.1fn,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)1002,ZhangDa,1202.0 C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0 c语言第13讲结构体与共用体(12)设有定义:struct person int ID; char name12;p;

41、请将scanf(%d, 【12】); 语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。&p.ID(14)有以下程序# include typedef struct int num; double s; REC; void funl(REC x) x.num=23; x.s=88.5; main() REC a=16,90.0; funl (a); printf(%dn,a.num); 程序运行后的输出结果是【14】。 16c语言第13讲结构体与共用体2009-3(37)有以下程序#include struct ord int x,y;dt2=1,2,3,4;main()st

42、ruct ord *p=dt;printf(%d,+p-x);printf(%d,+p-y );程序的运行结果是()A)1,2 B)2,3 C)3,4 D4,1c语言第13讲结构体与共用体2008-9(33)有以下程序#include struct st int x, y;) data2=l,10,2,20;main() struct st *p=data;printf(%d, p-y); printf(%dn,(+p)-x);程序的运行结果是( )。A)10,1 B)20,1 C)10,2 D)20,2c语言第13讲结构体与共用体(37)有以下程序#include main() struct

43、 STU char name9; char sex; double score2; ;struct STU a=Zhao,m,85.0,90.0), b=Qian,f,95.0,92.0);b=a;printf(%s,%c,%2.0f,%2.0fn,,b.sex,b.score0,b.score1);程序的运行结果是( )。A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90c语言第13讲结构体与共用体(3636)设有定义:)设有定义:Struct complexStruct complex int real,unr

44、eal;data1=1,8,data2; int real,unreal;data1=1,8,data2;则以下赋值语句中错误的是(则以下赋值语句中错误的是( )A. data2=data1; A. data2=data1; B.data2=(2,6); B.data2=(2,6); C.data2,real=data1.real; D.data2.real=data2.unreal;C.data2,real=data1.real; D.data2.real=data2.unreal;(37)(37)有以下程序有以下程序#include #include #include #include Struct AStruct A in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论