C++数组 结构体 联合体_第1页
C++数组 结构体 联合体_第2页
C++数组 结构体 联合体_第3页
C++数组 结构体 联合体_第4页
C++数组 结构体 联合体_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 数组、结构体及联合体4.1 数 组一. 数组的概念构结类型1.数组具有相同性质的一组数据的有序集合 如: 英语成绩: E1, E2, . E40 计算机成绩: C1, C2, . C40 Ei i=1,2,.,40 表示学号) 2. 数组元素数组中的每一项数据。 如: E3 表示第3号学生的英语成绩 下标元素越多,数组越大3. 数组的维数下标的项数 Ei i=1,2,.,40 表示学号) 一维数组 scoreij (i=1,2,.,40; j=1,2,3)二 维数组 如:i学号;j学科号(1-英语,2-数学,3-物理 那么:score323号学生的数学成绩1. 一维数组的定义表示元素的

2、个数从0开始编号如:定义 float a10; 即:a0, a1, a2, . , a9注意: 类型说明符 数组名常量表达式1. 常为整形,或字符型 2. 不能含有变量main( ) int n; scanf(“%d,&n); float en; .解决:根据实际情况,选一个稍大的数。main( ) float e60; .类型说明符 数组名常量表达式 二. 一维数组的定义与使用形式2 . 一维数组元素的引用 1) 不能一次引用整个数组, 只能引用数组元素 。引用多个数组元素时, 常借助于循环。 2) 数组元素的使用与一般的变量相似。 3) 数组元素的引用形式: 数组名下标 整形常量或整形表达

3、式例4-1 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1, 4, 5, 6, 8。 解: a0 a1 a2 a3 a4 1 4 5 6 8a0 a1 a2 a3 a4 a5 原那么法一:#includestdio.h void main( ) int a10,i,j,t; printf(“input datdn); for (i=0; i=9; i+) printf(“a%d=“,i); scanf(“%d,&ai); for(i=0,j=9; i=j; i+,j-) t=ai; ai=aj; aj=t; for(i=0;i=9;i+) printf(“a%d

4、=%d “,i,ai); 法二:借助于另一个数组作缓冲#includeiostream.hvoid main( ) int a10,b10,i,j,t; cout“input datdn; for (i=0; i=9; i+) cout“a“iai; for(i=0; i=9; i+) b9-i=ai; for(i=0; i=9; i+) ai=bi; for(i=0;i=9;i+) cout“a“iai“ “; 3. 一维数组的初始化定义数组时,给数组元素赋初值1. 给所有元素赋初值 int a10=1,2,3,4,5,6,7,8,9,10; 即:a0=1 a1=2 . a9=102. 给局

5、部元素赋初值 int a10=1,2,3; 即:a0=1 a1=2 a2=3 a3=0. a9=03. 对所有元素赋初值时,可不指定长度 int a =1,2,3; 即:a0=1 a1=2 a2=3 默认只有三个元素解# includeiostream.h main() int a11; int i, j, t; coutinput 10 data:n; for(i=1; i=10;i+) coutaiai; for(i=1;i=9;i+) for(j=i+1;jaj) t=ai; ai=aj;aj=t; coutthe sorted data:n; for(i=1; i=10;i+) cou

6、tai=aiendl; 4. 一维数组程序举例例4-2任意输出10个整数, 从小到大顺序输出.例4-3 有10 从小到大排列的整数, 从键盘上输入一个整数,要求按大小顺序插入这10个数中。解: 设有a10数组, 分三种情况插入数=a10插入数介于a0与a10之间#includeiostream.hvoid main( ) int i,j,x,t; int a11=1,3,5,7,9,11,13,15,17,19; coutx; if(x=a9) a10=x; if(x=0;i-) ai+1=ai; a0=x; if(xa0&xa9)for(i=0;ix) t=i; break; for(j=9

7、;j=t; j-) aj+1=aj; at=x; for(i=0;i=10;i+) coutai=aiendl; 1. 定义 类型说明符数组名常量表达式常量表达式;1). 格式:例: int a34; 三行四例a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23另一种理解: flaot a04,a14,a24;数组名2).在内存中的存放 “按行存放a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23a23a22a00a02a01.高低3).多维数组的定义 与二维数组的方法相同如: 三维数组 float b234;a03

8、a10a11a12a11a13第一行第二行三. 二维数组的定义与使用2. 二维数组的使用与一维数组相似数组名下标下标整型表达式变量常量3. 二维数组的初始化1) . 分组给二维数组赋初值int a34=1,2,3,4,5,6,7,8,9,10,11,12; a00 a01 a02 . a22 a23只能引用数组元素 。引用多个数组元素时, 常借助于循环。 2). 对所有元素赋初值(按数组元素的顺序) int a34=1,2,3,4,5,6,7,8,9,10,11,12; a00 a01 a02 . a22 a233). 对局部元素赋初值 int a34=1,5,9;1 0 0 05 0 0 0

9、9 0 0 0 int a34=1,0,6,0,0,11;1 0 0 00 6 0 00 0 11 0 4). 对全部元素赋初值时,第一维(行)长度可以省略 int a 4=1,2,3,4,5,6,7,8,9,10,11,12;int a34 =1,2,3,4,5,6,7,8,9,10,11,12;即:4个元素一组int a 4=1,2,0,10;1 2 0 00 0 0 00 10 0 0 4. 二维数组程序举例 注: 常借助于双重循环例4-41 2 34 5 61 42 53 6a=b=#includestdio.hvoidmain() int a23=1,2,3,4,5,6, b32,

10、i, j; printf(“Array a :n); for(i=0;i2;i+) for(j=0;j3;j+) printf(“% d,aij); printf(“n); for(i=0;i2;i+) for(j=0;j3;j+) bji=aij; printf(“Array b :n); for(i=0;i3;i+) for(j=0;j2;j+) printf(“% d,bij); printf(“n); for(i=0;i2;i+) for(j=0;j3;j+) printf(“% d,aij); bji=aij; printf(“n);也可以将3*4矩阵,按行排序(从小到大)存放2 1

11、 4 310 11 8 76 5 12 91 2 3 45 6 7 89 10 11 12解:2维1维排序2维1维一维序号=行号*列数+ 列号二维行号= 一维序号/ 列数二维列号= 一维序号% 列数例4-5# includeiostream.hvoid main() int a34=2,1,4,3,10,11,8,7,6,5,12,9; int b12,i,j,t; for(i=0;i3;i+) for(j=0;j4;j+) bi*4+j=aij; for(i=0;i=10;i+) for(j=i+1;jbj) t=bi; bi=bj; bj=t; for (i=0;i=11;i+) ai/4

12、i%4=bi; for(i=0;i3;i+) for(j=0;j4;j+)coutaij ; coutendl; 法二:# includeiostream.hmain() int a34=2,1,4,3,10,11,8,7,6,5,12,9; int i,j,t; for(i=0;i=10;i+) for(j=i+1;jaj/4j%4) t= ai/4i%4; ai/4i%4 aj/4j%4 aj/4j%4 =t; for(i=0;i3;i+) for(j=0;j4;j+) coutaij ; coutendl; 打印扬辉三角形。打印10行1 1 11 2 11 3 3 11 4 6 4 11

13、 5 10 10 5 1.# includeiostream.h# includeiomanip.hvoid main() int a1010, i, j; for(i=0;i=9;i+) ai0=1; aii=1; for(i=2;i=9;i+) for(j=1;j=(i-1);j+) aij=ai-1j-1+ai-1j; for(i=0;i=9;i+) for(j=0;j=i;j+) coutsetw(5)aij; coutendl; 例4-6存放字符的数组;每一个元素存放一个字符1. 字符数组的定义一维字符数组二维字符数组例: char a12; a0=I ; a1=t; a2= ; a

14、3=i; a4=s a5= ; a6=a; a7= ; a8=b; a9=o ; a10=o; a11=k;It is a bo oka0 a1 a2 . a10 a11 注:字符型与整型通用 char a10; int a10;等价char 数组名常量表达式;char 数组名常量表达式 常量表达式;四. 字 符 数 组2. 字符数组的初始化与数值型数组相似一维:二维char a12=I, t, , i, s, , a , b, o, o, o, k char a33= , , * , , *, * , * , *, *char a3= , , * , , *, * , * , *, *等价3

15、. 字符数组的引用 与数值型数组相似,只能引用元素单个字符,不能引用整个数组借助于循环例7.7 输出一个钻石图形# include “iosteam.hvoid main() char diamond5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,* ; int i,j; for(i=0;i5;i+) for(j=0;j5;j+) coutdiamondij; cout字符串长度; 2. 数组中放的是字符还是字符串, 关键看最后一个元素为0 那么为字符串不为0 那么只能是假设干个字符字符数组多个元素(字符)最后一个元素 赋为05. 字符数组的输入输出两种方法1.对字

16、符数组中的每一个元素,逐一输入、输出。采用循环实现。2. 以字符串的形式,对整个字符数组输入、输出。1). 逐个输入、输出单个字符与引用数组元素相同 例:输入一段文字,转换成大写输出。#include“stdio.hvoid main() char ch200; int i,j; for(i=0;(chi=getchar()!=n;i+) if (chi=a&chi=z) chi=chi-32; for(j=0;j=i-1;j+) putchar(chj); putchar(n); 2). 对整个字符串输入、输出采用 cin cout scanf(“%s,.)、printf(“%s,.) (1

17、)输出:结果:It is a book例2 char a=c, h,i, 0, n, a, 0, 0; printf(“%s, a);或: char a13=I, t, , i, s, , a , , b, o, o, k, 0 ; printf(“%s, a);例1: char a=“It is a book; printf(“%s, a);注意:用数组名结果:chi输出至第一个0结束用printf(“%s,数组名)注意:用数组名注意:用数组名用cout数组名char a=“It is a book;couta;) 输入:china输入不能超过5个字符a0 a1 a2 a3 a4 a5cha

18、in0自动加0例: char a20; scanf(“%s,a);(或:cina;) 输入:How are you?How0a0 a1 a2 a3 . a19遇“空格认为输入结束自动加0%s格式默认两种情况表示输入完成: 1)回车, 2)空格cin 数组名或6. 字符串处理函数1). 字符串输出函数 puts( ) puts(字符串/字符数组名2). 字符串输入函数 gets( ) gets(字符数组名 注: 以回车键作为输入结束,故字符串中可含有空格程序开头用“文件包含命令:#include“stdio.h3). 字符串连接函数 strcat( ) strcat(字符数组1,字符串或字符数组

19、24). 字符串拷贝函数 strcpy( ) strcpy(字符数组名1,字符串或字符数组名2)后者内容替代前者内容。常用于字符串赋值前者+后前 放入前者中程序开头用“文件包含命令:#include“string.h5). 字符串比较函数 strcmp( ) strcmp(字符串1或字符数组名1,字符串2或字符数组名2 规那么:1从左至右,逐个字符比较,直到出现不同字符或0为止 2结果: 第一个不相同字符的ASC 码之差 串1=串2 结果=0串1串2 结果0串1串2 结果a结果为:105-97=86). 测字符串长度函数 strlen( ) strlen(字符串或字符数组名 求字符串的长度不包

20、括0)7). strlwr(字符串) 将字符串中的大写字母变成小定字母8). strupr(字符串) 将字符串中的小写字母变成大定字母程序开头用“文件包含命令:#include“string.h7. 字符数组应用举例编写一个程序, 将两个字符串连接起来,不用strcat函数。AB0DCEF0HG#includeiostream.h# include stdio.hvoid main() int i,k; char s120,s210; cout“input string s1: n; gets(s1); cout“input string s1: n; gets(s2); for (i=0;

21、s1i!=0;i+) ; k=i; for (i=0; s2i!=0;i+) s1k+i=s2i; s1k+i=0; puts(s1); s1s2为什么这样做?解:例4-8例4-9 对一组姓名设为6个按字母大小排序A Z或a z解:一个姓名由多个字符组成,故用字符数组表示 多个姓名由二维字符数组表示# incudeiostream.h#include“string.h main() char n630=“Li,“Zhang,“Zheng,“Huang,“Jiang,“Zhao; char t30; int i,j; for (i=0;i=4;i+) for(j=i+1;j0) strcpy(t

22、,ni); strcpy(ni,nj); strcpy(nj,t); for(i=0;i=5;i+) coutni; couty) flag=1; else if (xy) flag=-1; else flag =0; rerurn (flag); voi main() int large (int ,int); int a10,b10,i,n,m,k; n=m=k=0; cout“input array a:n; for(i=0;iai;cout“input array b:n; for(i=0;ibi;for(i=0;i=9;i+) if(large(ai,bi)=1) n+; else

23、if(large(ai,bi)=0 m+; else k+; cout“ l,m,k=“n,m, kk) coutarray bn;if (nk) cout“ array aarray bn;if (m=9) couty 结果: 1如:xy 结果: -1x=y 结果: 0统计:大于、小于、等于的次数(大于的次数)(等于的次数)(小于的次数)五. 数组作函数参数2. 数组名作为参数的参数第8章第7节被调用函数中: 形参 数组名主调函数中: 实参 数组名传值内容:传整个数组。即将数组中的所有元素,从主调函数传给被调用函数。例4-11 *求一个数组前n个元素的平均值。#includeiostream

24、.hfloat average( float a, int m) int i; float aver,sum=0.0; for(i=0;i=m-1;i+) sum=sum+ai; aver=sum/m; return(aver); void main() float average(float a,int m); float score10,ave; int i,n; cout“input array an; for(i=0;i=9;i+) cout“score“iscorei; coutn; ave=average(score,n); cout“ave=“aveendl; 函数声明函数调用第

25、8章第7节几点注意1). 主调函数和被调用函数中均定义数组, 类型一致;2).元素个数, 可以相同或不一致 要求: 实参数组元素个数形参数组元素个数3). 形参数组可以不指定元素个数, 以增加通用性;4).传数值的方式传递地址。传递地址数组名是数组的首地址第一个元素在内存所占单元的编号用数组名作函数参数,相当于:实参数组首地址形参数组首地址故:传实参数组各个元素形参数组各个元素10001001100210031004100510061007.score0score1score2score9a0a1a2a9低地址高地址内存单元地址首地址共占相同的内存单元结论:形参数组元素值的改变 实参数组元素值

26、 影响第8章第7节例4-12写一个函数,使输入一个字符串反序存放,在主函数中输入输出字符串。# include “stdio.h# include “string.hvoid f(char a) int i,j,k; char b; i=j=0; while(ai!=0) i+; k=i-1; for(i=0, j=k; ij;i+,j-) b=ai; ai=aj;aj=b; void main() void f(char a); char b30; printf(“input a srting :n); gets(b); f(b); printf(“resulte is:n); puts(b

27、); 为什么?3. 多维数组作参数的参数1). 多维数组的元素作函参数被调用函数中: 形参用变量主调函数中: 实参用数组元素2). 数组名作函参数被调用函数中: 形参 数组名主调函数中: 实参 数组名与一维数组相似注:(1). 被调用函数中,定义函数时,形参数组的第一维大小可省略; int max_value (int array 4)省略(2). 实参数组元素个数形参数组元素个数例4-13 写一个函数,使给定的一个二维数组33转置,即行列互换。# include iostream.h# includeiomanip.hvoid f(int a33) int i,j,b; for (i=0;i

28、=2;i+) for(j=0;ji;j+) b=aij; aij=aji; aji=b; 注意!viod main() int c3=1,2,3,4,5,6,7,8,9; int i,j; coutsource array is:n; for(i=0;i=2;i+) for(j=0;j=2;j+) coutsetw(5)cij; coutendl; f(c); coutresulte is:n; for(i=0;i=2;i+) for(j=0;j=2;j+) coutsetw(5)cij; coutendl; 整型实型字符型枚举型根本数据类型只能定义单一的数据种类 在实际应用中,希望将这些根本

29、类型根据某种需要, 组成一个整体, 从而得到一种新的数据类型。 结构体类型 采用结构体(类型)由根本数据类型,组合而成的一种数据类型。如:要表示学生的情况学号 num 10010 (int)姓名 name Liming (char)性别 sex M (char)年龄 age 18 (int)分数 score 90.0 (float)10010LimingF1890.0结构体类型的定义struct 结构体名 类型符 成员名1; 类型符 成员名2; . 类型符 成员名n;形式注:1)结构体、成员的命名规格与变量相同;2) “成员又名“分量或“域4.2 结 构 (体)一.概 述例:struct st

30、udent int num; char name30; char sex; int age; float score;结构体名(是类型名,而非变量名)成员名三种方法1). 先定义结构体类型, 再定义变量struct student int num; char name30; char sex; int age; float score;student stu1, stu2; 分号不能少定义结构体类型变量名类型名二. 结构体类型变量的定义2. 同时定义struct student int num; char name30; char sex; int age; float score; stu1

31、, stu2;变量名类型名无分号3. 直接定义 struct int num; char name30; char sex; int age; float score; stu1, stu2;无类型名变量名说明:1). 注意结构体类型与结构体变量的不同含义;student stu1,stu2;int a, b;比较2). 结构体的成员可以是另一个结构体类型; 即: 结构体中又包含结构体3). 成员名与程序中其他变量同名时, 互不干抚。下一页ageexameEnglishMathsexnamenum如:struct score float english; float math;struct s

32、tudent int num; char name30; char sex; int age; score exame; stu1,stu2;struct student int num; char name30; char sex; int age; float exame2; stu1,stu2;或:定义类型使用已定义的结构体1. 引用原那么只能引用成员,不能引用整个结构体变量方法:结构体变量名. 成员名成员运算符。优先级最高,左结合例如:stu1. num 引用结构体变量stu1中的成员num 2. 使用结构体变量中成员的使用与一般的变量或数组相同。stu2. score=stu1.sc

33、ore; strcpy (, );sum=stu1.score+stu2.score; 三. 结构体类型变量的引用特例: 具有相同结构的两个结构体变量可整体赋值stu2=stu1;stu2.num .stu2.score stu1.score相当于3. 成员又是结构体类型只能引用最低级别的成员例: ave= (stu1.exame.english+stu2.exame.english)/2.0;struct score float english; float math;struct student in

34、t num; char name30; char sex; int age; score exame; stu1,stu2;在定义结构体变量时赋初值struct student int num; char name30; char sex; int age; float score;student stu1=1001,“Liming,M,18, 90.0例1例2struct student int num; char name30; char sex; int age; float score; stu1=1001,“Liming,M,18, 90.0;例3struct int num; ch

35、ar name30; char sex; int age; float score; stu1=1001,“Liming,M,18, 90.0;注意: 初始值的顺序、类型与成员要一致分开定义时赋初值同时定义时赋初值直接定义时赋初值四. 结构体类型变量的初始化数组中的每一个元素都属于同一种类型的结构体1. 结构体数组的定义第1种方法struct student int num; char name30; char sex; int age; float score;student stu10; struct student int num; char name30; char sex; int

36、age; float score; stu10;struct int num; char name30; char sex; int age; float score; stu10;第2种方法第3种方法2. 结构体数组的初始化定义结构体数组时,给各元素的成员赋初值struct student int num; char name30; char sex; int age; float score;student stu10=1001,“Liming,M,18, 90.0, 1002,“wangfan,F,18,87.5; . ; 多种方法五. 结构体类型数组struct student int

37、 num; char name30; char sex; int age; float score; stu10=1001,“Liming,M,18, 90.0; 1002,“wangfan,F,18,87.5; . ;3 . 结构体数组的使用1)符合数组引用方法: 只能引用元素2)符合结构体变量的引用原那么: 只能引用成员例4-14 10个学生, 每个学生包括学号、姓名、3门课的分数, 求:1全班每门课的学科平均分; 2找出成绩最好平均成绩的学生,输出姓名、学号、各科分 数和平均分 英语C程序数学907082826475707885.ave0ave1ave2stu0stu1stu2.(90+

38、70+82)/3.0=80.7(82+64+75)/3.0=73.7(70+78+85)/3.0=77.7.学生平均分科目平均分# includeiostream.hvoid main() srtuct student int num; char name30; float score3; ; student stu10; float ave3, aves int i,j,k; for (i=0;i10;i+) cout“input data of No. “ iendl; cinstui.num stui.score0stui.score1stui.score2; ave0

39、=0.0; ave1=0.0; ave2=0.0; for(i=0; i10; i+) for(j=0;j3;j+) avej=avej+stui.scorej; ave0=ave0/10.0; ave1=ave1/10.0; ave2=ave2/10.0; 定义结构体数组输入数据求各科平均分aves=(stu0.score0+stu0.score1+stu0.score2)/3.0; k=0; for (i=0; iaves) aves=(stui.score0+stui.score1+stui.score2)/3.0; k=i;cout“average= ave0, ave1, ave2;

40、cout“the data of student with maxium average score “stuk.num , stuk.scoe0stu uk.scoe1 stuk.scoe2;第11章第5节求最高分数的学生位置k第11章第6节六. 结构体类型数据作函数参数1). 用成员作函数参数与一般变量相同;2). 用结构体变量(数组)作函数参数传数值(所有的成员值) 编写一个函数print, 打印一个学生的成绩数组,该数组中有5 个学生的数据记录,每个记录包括num、name、score3, 用主函数输入这些记录,用print函数输出这些记录。#include“iost

41、ream.h# include “stdio.hstruct student int no; char na30; float s3;void main() void print(student stu, int n); student stu5; int i, j; for(i=0; i=4; i+) cout“input data of No. %d stui.no stui.na &stui.s 0 stui.s1 stui.s2; print (stu, 5); void print ( student stu, int n) int i, j; for(i=0; i=n-1; i+)

42、 cout“input data of No. %d i; coutstui.no stui.na stui.s 0 stui.s1 stui.s2; 在函数外定义结构体,所有的函数均可使用用数组名作函数参数,传整个结构体数组中的元素及成员本方法是用结构体数组名作函数参数例4-154.3 联合体(共用体)一. 共用体的概念1. 什么是共用体将多种类型数据, 放在起始位置(首地址)相同的一段存贮单元, 即多种数据共用一段内存。(但同一时刻,只能放一种类型的数据 )2. 共用体类型及共用体变量的的定义2). 同时定义union 共用体名 成员表列 变量表列;union data int i; ch

43、ar ch; float f; a,b,c;3). 直接定义union int i; char ch; float f; a,b,c;union 成员表列 变量表列;1). 分开定义(先定义类型,后定义变量)union 共用体名 成员表列 ;共用体名 变量表列;union data int i; char ch; float f; ;data a,b,c;3. 共用体类型与结构体类型的区别结构体 多种类型数据的组合,成员同时存在; 一个结构体变量占内存:成员字节总和。共用体 成员不同时存在,某一时刻只有一个成员占用内存。 一个共用体变量占内存:成员中最长字节union data int i;

44、char ch; float f; a,b,c;struct data int i; char ch; float f; x,y,z;占字节数:2+1+4=7字节占字节数:max2,1,4=4字节二. 共用体变量的引用只能引用成员,不能引用共用体变量couta.i;couta三. 共用体类型数据的特点1. 某一时刻只能放一种数据;并且是最近一次放入的数据。2. 共用体变量和各成员的地址相同;3. 共用体变量不能初始化union int i; char ch; float f; a=1,a,1.54. 共用体变量不能用作 函数参数新标准可以5. 可以定义共用体数组union int i; cha

45、r ch; float f; a10;6. 共用体、结构体可以嵌套共用体中包含结构体;结构体中包含共用体。四. 共用体的应用1. 同一个数据区间,根据不同的情况,存放不同类型的数据。例4-16教师数据: 身份证号,姓名,性别,职业,工资学生数据: 身份证号,姓名,性别,职业,班级类型不同整型数字符串# includeiostream.hstruct p char c20; char na30; char sex; char job; union int w; char cla20; ca; ;void main() struct p m2; int i; float f; coutinput

46、data: ; for(i=0; imi.cmi.na&mi.sex&mi.job; if(mi.job=t| mi.job=T) cinmi.ca.w; else cinmi.ca.cla; for(i=0; i2; i+) coutmi.c mi.na mi.sex mi.job; if(mi.job=t| mi.job=T) cout mi.ca.w; else coutmi.ca.cla; 如职业为t或T,输入工资否那么输入班级结构体中含共用体2. 查看不同类型数据的存放# include “iostream.hvoid main() union int b; char a2; x;

47、x.b=24897; coutx.bx.a0 x.a1endl; 0110000101000001a0a19765结果: 24897, A, a# include “iostream.hvoid main() union int b; char a2; x; x.a0=2; x.a1=1; cout,x.b; 0000000100000010a0a128+2=258 x.b结果: 258例4-17例4-18第11章第9节一. 概 念某一种变量只有几个有限的数值, 在定义时将其一一列出。二. 定 义1. 定义类型sex (性别): male, femaleweek : sun, mon, tue

48、, wed, thu, fri, sat enum 类型名 枚举元素(枚举常量);例enum week sun, mon,tue,wed,thu,fri,sat;2. 定义变量1). 分开定义enum week sun, mon,tue,wed,thu,fri,sat;week day;枚举元素。但凡属于该类型的变量,只能取这些值。类型名变量名2). 同时定义3). 直接定义enum week sun, mon,tue,wed,thu,fri,sat day;enum sun, mon,tue,wed,thu,fri,sat day;4.4 枚举类型第11章第9节三. 说 明1. 枚举元素是常

49、量,而非变量。sum=0;2. 枚举元素的值如按数值使用, 其值根据定义的顺序依次为:0,1,2,3.enum week sun, mon,tue,wed,thu,fri,sat day;day=mon;printf(“%d,day);例输出:1*枚举元素的值在定义时可以改变enum week sun=7, mon=1,tue,wed,thu,fri,sat day;day=sat;printf(“%d, day);输出:63. 枚举变量的比较由其元素值大小确定enum week sun=7, mon=1,tue,wed,thu,fri,sat day1; day2day1=sat; day2=sun;值为:7值为:6故:day1 小于 day2第11章第9节4. 枚

温馨提示

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

评论

0/150

提交评论