《第5章 结构体、共用体与枚举.ppt》由会员分享,可在线阅读,更多相关《第5章 结构体、共用体与枚举.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章结构体、共用体与枚举教学目标教学目标:通过本章学习,要求学生能熟练运用结构体这一新通过本章学习,要求学生能熟练运用结构体这一新的数据结构编制较复杂的应用程序。同时掌握共用体的数据结构编制较复杂的应用程序。同时掌握共用体、枚举类型和用户自定义类型、枚举类型和用户自定义类型typedef的使用方法。的使用方法。本讲重点本讲重点:结构体变量的定义、引用、初始化;结构体变量的定义、引用、初始化;2typedef自定义结构体类型的方法。自定义结构体类型的方法。教学方法教学方法:理论教学与实践教学相结合。理论教学与实践教学相结合。第5章结构体、共用体与枚举第第5章章 结构体、共用体与枚举结构体、共用
2、体与枚举5.1结构体类型与变量结构体类型与变量5.2结构体数组结构体数组5.3结构体与指针结构体与指针5.4自定义类型自定义类型5.5共用体类型与变量共用体类型与变量5.6枚举类型与变量枚举类型与变量5.7程序设计举例程序设计举例第5章结构体、共用体与枚举第5章结构体、共用体与枚举一组类型相同的相关的数据我们可以用数组来存储,一组类型相同的相关的数据我们可以用数组来存储,而而类型不同又相关类型不同又相关的数据如何来处理呢?的数据如何来处理呢?学号学号num姓名姓名name性别性别sex年龄年龄age成绩成绩score地址地址addrC C引入一种能集中不同数据类型于一体的数据类型引入一种能集中
3、不同数据类型于一体的数据类型结构体结构体类型类型 ,该类型由用户自己定义。该类型由用户自己定义。5.1结构体类型与变量结构体类型与变量整型字符数组字符f女m男整型实型字符数组第5章结构体、共用体与枚举&结构体是一种结构体是一种构造构造数据类型数据类型&用途:把用途:把不同类型不同类型的数据组合成一个整体的数据组合成一个整体-自定义自定义数据类型数据类型7.1.1结构体类型定义结构体类型定义结构体类型定义的一般形式为:结构体类型定义的一般形式为:struct结构体类型名结构体类型名类型类型1成员变量成员变量1;类型类型2成员变量成员变量2;类型类型n成员变量成员变量n;;例如:例如:struct
4、 student int num;char name20;char sex;int age;float score;char addr30;整型字符数组字符F女M男整型实型字符数组学号学号num姓名姓名name性别性别sex年龄年龄age成绩成绩score地址地址addr结构体类型合法表示符,相合法表示符,相当于变量名当于变量名第5章结构体、共用体与枚举说明:说明:1.结构体类型由结构体类型由“struct结构体类型名结构体类型名”说明和引用。说明和引用。2.相同类型的成员可以合在一个类型下说明。如相同类型的成员可以合在一个类型下说明。如structstudentintnum,age;char
5、name20,sex,addr30;floatscore;3.类型定义不分配类型定义不分配内存内存。结构体类型定义描述结构的组织形式结构体类型定义描述结构的组织形式,不分配内存。不分配内存。第5章结构体、共用体与枚举4.结构体类型可以嵌套定义,即在结构体类型定义结构体类型可以嵌套定义,即在结构体类型定义中又有结构体类型的成员。如中又有结构体类型的成员。如 struct student int num,age;char name20,sex,addr30;地址地址addr成绩成绩score年龄年龄age性别性别sex姓名姓名name学号学号num数学物理语文英语structfloatchines
6、e,math,physics,english;score;/*无名结构体类型定义的成员无名结构体类型定义的成员score*/第5章结构体、共用体与枚举5.结构体类型有作用范围的,有全局和局部之分。在结构体类型有作用范围的,有全局和局部之分。在一个函数中定义的结构体类型是局部的,只能用于在一个函数中定义的结构体类型是局部的,只能用于在函数体中定义结构体变量;函数体中定义结构体变量;在函数之外定义的结构体类型是全局的,可以在其后在函数之外定义的结构体类型是全局的,可以在其后的任意位置定义结构体类型变量。的任意位置定义结构体类型变量。一般写在函数前面定义。一般写在函数前面定义。第5章结构体、共用体与
7、枚举5.1.2结构体变量的定义和引用结构体变量的定义和引用1.结构体变量的定义结构体变量的定义有如下三种形式有如下三种形式(以前节的结构体类型以前节的结构体类型student为例为例):1)先定义结构体类型先定义结构体类型,再定义结构体类型变量,如再定义结构体类型变量,如structstudenta,b,c;2)定义结构体类型同时定义结构体类型变量,如定义结构体类型同时定义结构体类型变量,如structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;a,b,c;第5章结构体、共用体与枚举3)定义无名结构体类型同时定义结
8、构体类型变量,如定义无名结构体类型同时定义结构体类型变量,如structintnum;charname20;charsex;intage;floatscore;charaddr30;a,b,c;因为没有类型名称,这种方法只能在定义类型时定义因为没有类型名称,这种方法只能在定义类型时定义变量,所以这种结构体类型变量,所以这种结构体类型无法重复使用无法重复使用。第5章结构体、共用体与枚举2.结构体变量的存储:系统为结构体变量的存储:系统为结构体变量分配一个合适大小的结构体变量分配一个合适大小的地址连续的存储空间,按成员定地址连续的存储空间,按成员定义的先后顺序存放各个成员的值。义的先后顺序存放各个
9、成员的值。内存空间的大小等于各个成员所内存空间的大小等于各个成员所占地址空间的总和。占地址空间的总和。例如例如 struct student a;,;,假设假设int占占2个字节,请问个字节,请问a占用占用_字节的内存空间。字节的内存空间。2201243059namenumsexagescoreaddr2字节字节2字节字节20字节字节1字节字节4字节字节30字节字节.struct student int num;char name20;char sex;int age;float score;char addr30;a 的存储空间的示意图的存储空间的示意图第5章结构体、共用体与枚举3.结构体变
10、量赋初值结构体变量赋初值1)结构体变量的初始化定义的同时赋初值)结构体变量的初始化定义的同时赋初值各成员的初值以集合方式写出,即:各成员的初值以集合方式写出,即:struct student int num;char name20;char sex;int age;float score;char addr30;struct student a=41024102,Li Ping,Li Ping,F F,21,80,21,80,Beijing Road 11#Beijing Road 11#;第5章结构体、共用体与枚举2)定义之后根据需要赋初值)定义之后根据需要赋初值此时,不允许整体赋值,此时,
11、不允许整体赋值,仅能对各个成员逐一赋值仅能对各个成员逐一赋值。struct student a;a=4102,Li 4102,Li Ping,Ping,F F,21,80,Beijing Road 11#,21,80,Beijing Road 11#;结构体成员的引用结构体成员的引用成员的引用方式:逐级引用到最底层的成员。成员的引用方式:逐级引用到最底层的成员。结构体变量结构体变量.成员变量名成员变量名.成员变量名成员变量名.因此上面赋值应改成:因此上面赋值应改成:成员引用运算符:.优先级:1结合方向:从左向右structstudentintnum;charname20;charsex;int
12、age;floatscore;charaddr30;a.num=4102;strcpy(a.name,Li Ping);a.sex=F;a.age=21;a.score=80;strcpy(a.addr,Beijing Road 11#);第5章结构体、共用体与枚举英语地址地址addr成绩成绩score年龄年龄age性别性别sex姓名姓名name学号学号num数学物理语文410221Li PingF87 63 54 72Beijing Road 11#【例【例5.1】结构体成员引用举例。结构体成员引用举例。有一个学生有一个学生a的相关信息如下,请编写程序输出的相关信息如下,请编写程序输出a的信
13、息。的信息。第5章结构体、共用体与枚举 structstudentintnum,age;charname20,sex,addr30;structfloatchinese,math,physics,english;score;;main()structstudenta=4102,21,LiPing,F,BeijingRoad11#,87,63,54,72;第5章结构体、共用体与枚举/*/*输出各成员的值输出各成员的值*/*/printf(No.:%dnName:%snSex:%cnAddress:%snprintf(No.:%dnName:%snSex:%cnAddress:%sn,_);_);
14、printf(Chinese:%5.1fnMath:%5.1fnPhisics:%5.1fprintf(Chinese:%5.1fnMath:%5.1fnPhisics:%5.1fnEnglish:%5.1fn,_nEnglish:%5.1fn,_);_);a.num,a.name,a.sex,a.addra.num,a.name,a.sex,a.addr a.score.chinese,a.score.matha.score.chinese,a.score.math,a.score.physics,a.score.englisha.score.physics,a.score.english第
15、5章结构体、共用体与枚举运行结果:运行结果:No.:4102No.:4102Name:Li PingName:Li PingSex:FSex:FAddress:Beijing Road 11#Address:Beijing Road 11#Chinese:87.0Chinese:87.0Math:63.0Math:63.0Physics:54.0Physics:54.0English:72.0English:72.0第5章结构体、共用体与枚举说明说明:1.在从键盘读入数据给变量赋值时,要按地址方式进行。在从键盘读入数据给变量赋值时,要按地址方式进行。printf(“InputNO.:”);sc
16、anf(%d,);printf(“Input Name:”);scanf(“%s”,);printf(“Input Sex.:”);scanf(%c,);printf(“Input chinese score:”);scanf(%f,);&a.numa.name&a.sex&a.score.chinese/数组名是首地址数组名是首地址*/struct student int num,age;char name20,sex,addr30;struct float chinese,math,physics,english;score;;第5章结构体、共用体与枚举2.结构体变量可以整体赋值结构体变量
17、可以整体赋值.structstudent.a=4102,21,“LiPing”,F,“BeijingRoad11#”,87,63,54,72,b;b=a;/*结构体变量的整体赋值结构体变量的整体赋值*/第5章结构体、共用体与枚举5.2结构体数组结构体数组结构体数组相当于一张二维数据表,表的横向相当结构体数组相当于一张二维数据表,表的横向相当于记录,而列向可以称为数据项(属性),用于描于记录,而列向可以称为数据项(属性),用于描述每条记录的所有信息。比如,下面的表格就可以述每条记录的所有信息。比如,下面的表格就可以用结构体数组处理。用结构体数组处理。第5章结构体、共用体与枚举#define N
18、3define N 3structstruct student student char num char num7 7,name30;,name30;intint com,engcom,eng;main()main()struct student stuN=202149,王学海王学海,83,77,203120,刘玉芳刘玉芳,89,72,201034,秋玲秋玲,76,68;int i;【例【例5.2】已知有一个班级学生的已知有一个班级学生的成绩信息表(见右图),请计算成绩信息表(见右图),请计算每个学生的总成绩,并输出。每个学生的总成绩,并输出。,total;第5章结构体、共用体与枚举 pri
19、ntf(NO.tNametComputertEnglishttTotaln);for(i=0;i-成员名成员名struct student stu1;struct student *p=&stu1;(*p).num=101;/*p-num=101 stu1.num=101;*/成员引用运算符成员引用运算符:.优先级优先级:1结合方向:从左向右结合方向:从左向右间接访问运算符:间接访问运算符:*优先级优先级:2结合方向:从右向左结合方向:从右向左指向运算符指向运算符:-优先级优先级:1结合方向:从左向右结合方向:从左向右numnamesexagestu1 p第5章结构体、共用体与枚举【例【例5.
20、4】通过使用指向结构体变量的指针输出结构通过使用指向结构体变量的指针输出结构体的信息。体的信息。#includestring.hstructstudentlongnum;charname20,sex;floatscore;main()structstudentstu=89101,LiLin,M,89.5,*p;p=&stu;第5章结构体、共用体与枚举printf(No.:%ldnname:%snsex:%cnscore:%fn,);运行结果:运行结果:No.:89101No.:89101 name:Li Lin name:Li Lin sex:M sex:M score:89.500000 s
21、core:89.500000 No.:89101 No.:89101 name:Li Lin name:Li Lin sex:Msex:M score:89.500000 score:89.500000(*p).num,(*p).name,(*p).sex,(*p).scorep-num,p-name,p-sex,p-score第5章结构体、共用体与枚举小结小结在存取结构体变量中的成员值时,有如下三种方式:在存取结构体变量中的成员值时,有如下三种方式:1.结构体变量名结构体变量名.成员名成员名2.(*结构体指针变量名结构体指针变量名).成员名成员名3.结构体指针变量名结构体指针变量名-成员名成
22、员名第5章结构体、共用体与枚举5.3.2结构体数组与指针变量结构体数组与指针变量【例【例5.5】利用指向结构体数组元素的指针变量输出利用指向结构体数组元素的指针变量输出元素元素。structstudentintnum;charname20,sex;intage;main()structstudentstu3=10101,LiLin,M,18,10102,WanFen,M,19,10104,LiuMin,F,20;第5章结构体、共用体与枚举structstudent*p;printf(No.tNametSextAgen);for(p=stu;pnum,p-name,p-sex,p-age);/*
23、/*利用指向结构体数组的指针变量输出元素利用指向结构体数组的指针变量输出元素*/*/运行结果:运行结果:No.No.Name Name Sex SexAgeAge10101 Li Lin10101 Li Lin M M18181010210102 Wan Fen Wan Fen M M19191010410104 Liu Min Liu Min F F2020第5章结构体、共用体与枚举5.3.3用指向结构体的指针作函数参数用指向结构体的指针作函数参数即即 以函数调用方式编程实现对以函数调用方式编程实现对结构体数组结构体数组的操作。的操作。【例【例5.65.6】已知学生的记录信息包括:学号,姓名
24、,已知学生的记录信息包括:学号,姓名,性别和年龄,要求从键盘输入性别和年龄,要求从键盘输入5 5条学生记录,以函数条学生记录,以函数调用方式编写程序,找出第一个女生的记录。调用方式编写程序,找出第一个女生的记录。形参:指向结构体数组的指针变量,形参:指向结构体数组的指针变量,实参:数组的首地址实参:数组的首地址应用举例:应用举例:第5章结构体、共用体与枚举/*函数声明函数声明*/int search(struct student s,int n);/*在长度为在长度为n的结构体数组中查找第一个女生记录,找到返回的结构体数组中查找第一个女生记录,找到返回下标,没找到返回下标,没找到返回-1*/相
25、当于相当于struct students*s/*类型定义类型定义*/struct student int num;char name20,sex;/*F表示女生,表示女生,M表示男表示男*/int age;#define N 5第5章结构体、共用体与枚举main()struct student stuN;int i;printf(“从键盘输入从键盘输入5条记录条记录(学号学号,姓名姓名,性别性别,年龄)年龄)n”);/*从键盘输入从键盘输入5条记录条记录*/for(i=0;iN;i+)scanf(“%d,%s,%c,%d”,&stui.num,&stui.name,&stui.sex,&stu
26、i.age);if()printf(“不存在女生记录不存在女生记录”);else printf(%dt%st%ct%dn,stui.num,stui.name,stui.sex,stui.age);(i=search(stu,N)=-1第5章结构体、共用体与枚举 int search(struct student s,int n)/*在长度为在长度为n的机构体数组中查找第一个女生记录,找到返回的机构体数组中查找第一个女生记录,找到返回下标,没找到返回下标,没找到返回-1*/int i;for(i=0;in;i+)if(si.sex=F)return i;return-1;/*没找到,返回没找到
27、,返回-1*/第5章结构体、共用体与枚举5.4自定义类型自定义类型定义格式:定义格式:typedef已有类型名已有类型名用户定义类型名用户定义类型名;功能:用自定义名字为功能:用自定义名字为已有已有数据类型起一个数据类型起一个别名别名例如:例如:1)给实型)给实型float定义定义1个别名个别名REAL可以写成:可以写成:2)给如下所示的结构类型)给如下所示的结构类型structdate定义定义1个别名个别名DATE。structdateintyear,month,day;structdated1,d2;typedef float REAL;typedef struct date int ye
28、ar,month,day;DATE;DATE d1,d2;第5章结构体、共用体与枚举3)自定义一维数组类型名)自定义一维数组类型名ARRAY:typedefintARRAY100;用新类型名定义变量用新类型名定义变量ARRAYa,b,c;/*a、b和和c都被定义成有都被定义成有100个分量的整型一维数组个分量的整型一维数组*/相当于下面定义形式相当于下面定义形式:(编译时系统自动进行替换)编译时系统自动进行替换)inta100,b100,c100;说明:说明:(1)typedef没有创造没有创造新数据类型新数据类型(2)typedef是定义类型是定义类型,不能定义变量不能定义变量(3)type
29、def编译时处理为已有类型名编译时处理为已有类型名优点:见名知义优点:见名知义,突出变量的性质突出变量的性质(或用途或用途),提高程序的提高程序的可读性;简化结构体类型的书写。可读性;简化结构体类型的书写。第5章结构体、共用体与枚举设有以下说明语句设有以下说明语句typedefstructintn;charch8;PER;则下面叙述中正确的是则下面叙述中正确的是()A)PER是结构体变量名是结构体变量名B)PER是结构体类型名是结构体类型名C)typedefstruct是结构体类型是结构体类型D)struct是结构体类型名是结构体类型名B第5章结构体、共用体与枚举5.5 共用体共用体共用体属于
30、构造数据类型共用体属于构造数据类型,也叫联合体。也叫联合体。用途:使几个不同类型的变量共占一段内存用途:使几个不同类型的变量共占一段内存(相互覆盖相互覆盖)5.5.1共用体类型定义共用体类型定义共用体类型定义的一般形式为:共用体类型定义的一般形式为:union共用体类型名共用体类型名类型类型1成员成员1;类型类型2成员成员2;类型类型n成员成员n;第5章结构体、共用体与枚举例如:例如:union data int i;char ch;float f;说明说明1)共用体变量的)共用体变量的几个成员叠放在同一个地址开始的几个成员叠放在同一个地址开始的空间上空间上,见上图。共用体变量任何时刻只有,见
31、上图。共用体变量任何时刻只有一个成员一个成员存在存在.2)共用体类型的长度为最大成员所占空间的长度共用体类型的长度为最大成员所占空间的长度。sizeof(uniondata)的计算结果的计算结果turboc下是下是4个字节,个字节,也就是也就是float类型所占的空间长度。类型所占的空间长度。union data x;fichx第5章结构体、共用体与枚举5.5.2共用体变量的定义和引用共用体变量的定义和引用定义和引用方式和结构体变量相同。定义和引用方式和结构体变量相同。共用体变量的定义有如下三种形式:共用体变量的定义有如下三种形式:1.定义共用体类型之后再定义共用体类型变量,如定义共用体类型之
32、后再定义共用体类型变量,如uniondataa,b,c;定义了三个共用体类型变量定义了三个共用体类型变量a、b和和c。2.定义共用体类型同时定义共用体类型变量,如定义共用体类型同时定义共用体类型变量,如uniondatainti;charch;floatf;a,b,c;第5章结构体、共用体与枚举3.定义无名共用体类型同时定义共用体变量,如定义无名共用体类型同时定义共用体变量,如unioninti;charch;floatf;a,b,c;这种形式的共用体类型无法重复使用。这种形式的共用体类型无法重复使用。共用体成员的引用方式共用体成员的引用方式共用体类型变量名共用体类型变量名.成员变量名成员变量
33、名.成员变量名成员变量名.第5章结构体、共用体与枚举共用体变量与结构体变量的区别共用体变量与结构体变量的区别1)内存单元分配不一样。)内存单元分配不一样。结构体变量是为每个成员分配独立的内存单元,单元总结构体变量是为每个成员分配独立的内存单元,单元总量等于各成员所占字节数之和。量等于各成员所占字节数之和。共用体变量是按成员空间的最大值来占有内存。共用体变量是按成员空间的最大值来占有内存。2)共用体变量中起作用的成员是)共用体变量中起作用的成员是最后一次存放的成员最后一次存放的成员【例【例5.85.8】共用体类型举例。共用体类型举例。union dataunion data intint i;i
34、;char char chch;float f;float f;main()main()union data union data uaua;ua.iua.i=10;=10;ua.chua.ch=A A;ua.f=3.14;ua.f=3.14;printf(i=%dtch=%ctf=%fn,ua.i,ua.printf(i=%dtch=%ctf=%fn,ua.i,ua.ch,ua.f);ch,ua.f);运行结果为:运行结果为:i=-2621i=-2621ch=ch=f=3.140000f=3.140000第5章结构体、共用体与枚举3 3)不能)不能在定义共用体变量时在定义共用体变量时初始化初
35、始化例例 union int i;char ch;float f;a=1,a,1.5;()4 4)共用体变量)共用体变量不能整体赋值不能整体赋值例例 union int i;char ch;float f;a;a=1,a,1.5;()第5章结构体、共用体与枚举例例 float x;union int i;char ch;float f;a,b;a.i=1;a.ch=a;a.f=1.5;b=a;()/*将将a所在内存单元的内容拷贝一份给所在内存单元的内容拷贝一份给b*/x=a.f;()(5)允许共用体变量间可以赋值。允许共用体变量间可以赋值。第5章结构体、共用体与枚举注意:注意:共用体变量不能整
36、体赋值,也不可以对共用体共用体变量不能整体赋值,也不可以对共用体变量进行初始化处理;共用体变量不能作函数参数变量进行初始化处理;共用体变量不能作函数参数传递,也不能使函数返回一个共用体类型的数据;传递,也不能使函数返回一个共用体类型的数据;但可以使用共用体类型的指针变量进行参数传递和但可以使用共用体类型的指针变量进行参数传递和成员引用等,其用法同结构体类型。成员引用等,其用法同结构体类型。第5章结构体、共用体与枚举5.6枚举类型枚举类型如果一个整型变量只有几种可能的值,可以定义为枚举类型。如果一个整型变量只有几种可能的值,可以定义为枚举类型。所谓所谓“枚举枚举”是指将变量的值一一列举出来,变量
37、的值只限于是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。列举出来的值的范围内。5.6.1枚举类型定义枚举类型定义它的一般格式为:它的一般格式为:enum枚举类型名枚举类型名枚举常量枚举常量1=序号序号1,枚举常量枚举常量2=序号序号2,枚举常量枚举常量n=序号序号n;其中,其中,枚举常量是一种符号常量枚举常量是一种符号常量,也称为枚举元素,也称为枚举元素,要符合标识符的起名规则。序号是枚举常量对应的整要符合标识符的起名规则。序号是枚举常量对应的整数值,可以省略,省略序号则按系统规定处理。数值,可以省略,省略序号则按系统规定处理。枚举常量列表第5章结构体、共用体与枚举例如,有如
38、下类型定义:例如,有如下类型定义:enumweekdaysun,mon,tue,wed,thu,fri,sat;说明:说明:1)省略序号,系统默认从省略序号,系统默认从0开始连续排列。开始连续排列。如上面的枚举类型中,如上面的枚举类型中,sun对应对应0、mon对应对应1、sat对应对应6。2)如果遇到有改变的序号,则序号从被改变位置开始)如果遇到有改变的序号,则序号从被改变位置开始连续递增。例如:连续递增。例如:enumweekdaysun,mon=6,tue,wed,thu=20,fri,sat;则则7 7个枚举元素的序号依次为:个枚举元素的序号依次为:0、6、7、8、20、21、22。第
39、5章结构体、共用体与枚举5.6.2枚举变量与枚举元素枚举变量与枚举元素定义枚举类型变量:有如下三种形式定义枚举类型变量:有如下三种形式1.定义枚举类型之后再定义枚举类型变量,如定义枚举类型之后再定义枚举类型变量,如enumweekdayworkday,today;2.定义枚举类型同时定义枚举类型变量,如定义枚举类型同时定义枚举类型变量,如enumweekdaysun,mon,tue,wed,thu,fri,satWorkday,today;3.定义无名枚举类型同时定义变量,这种类型无法重定义无名枚举类型同时定义变量,这种类型无法重复使用复使用,如如enumsun,mon,tue,wed,thu
40、,fri,satworkday,today;第5章结构体、共用体与枚举说明说明(1)枚举型变量的取值仅限于值表中的值。)枚举型变量的取值仅限于值表中的值。(2)枚举元素可以进行比较。)枚举元素可以进行比较。如:如:if(workday=mon).if(weekend=sat).(3)可以直接把一个整数赋值给一个枚举变量可以直接把一个整数赋值给一个枚举变量如,如,workday=5正确!正确!,TC2.0和和VC6.0下均可。下均可。(4)枚举元素的值可以按枚举元素的值可以按%d格式输出格式输出,但通常想输但通常想输出的是枚举常量标识符信息,此时要用到出的是枚举常量标识符信息,此时要用到swit
41、ch语句,语句,然后用字符串输出语句输出。然后用字符串输出语句输出。第5章结构体、共用体与枚举enumweekdaysun,mon,tue,wed,thu,fri,sat;main()enumweekdaytoday;intx;printf(Inputaninteger(0-sun,1-mon,2-tue,3-wed,4-thu,5-fri,6-sat):);scanf(%d,&today);switch(today)casesun:printf(Sunday!n);break;casemon:printf(Monday!n);break;casetue:printf(Tuesday!n);break;casewed:printf(Wednesday!n);break;casethu:printf(Thursday!n);break;casefri:printf(Friday!n);break;casesat:printf(Saturday!n);break;运行结果:运行结果:3 3 WednesdayWednesday!
限制150内