目录
3.枚举变量的定义(类似于结构体一样,有3种方式定义枚举变量):
1.输入5个人的姓名、学号、成绩,但是光靠记忆是记不住哪个人的成绩是数组中第几个元素:
一:枚举(enum):
1.概念:
枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。
2.一般形式:
enum 枚举名 {枚举元素1,枚举元素2,……};
如 : enum season {spring, summer=3, autumn, winter};
(1)可以在定义枚举类型时改变枚举元素的值。
(2)没有指定值的枚举元素,其值为前一元素加 1。
3.枚举变量的定义(类似于结构体一样,有3种方式定义枚举变量):
(1).先定义枚举类型,再定义枚举变量
enum Season {spring, summer, autumn, winter}; enum Season s;
(2).定义枚举类型的同时定义枚举变量
enum Season {spring, summer, autumn, winter} s;
(3).省略枚举名称,直接定义枚举变量
enum {spring, summer, autumn, winter} s;
*上面三种方式定义的都是枚举变量。
4.枚举使用注意:
1> C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。
2> 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。
5.实例分析:
#include <stdio.h>
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
int main()
{
// 遍历枚举元素
for (day = MON; day <= SUN; day++) {
printf("枚举元素:%d \n", day);
}
}
即:
在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。
二.将枚举、数组和结构体结合起来使用例题:
1.输入5个人的姓名、学号、成绩,但是光靠记忆是记不住哪个人的成绩是数组中第几个元素:
struct Student
{
char name;
long num;
double grade;
} ST;
struct Student ST = {{"zhangsan", 0001, 86},
{"lisi", 0002, 72.5},
{"wangwu", 0003, 60},
{"chenliu", 0004, 23},
{"cuihua", 0005, 92}};
enum ST_INDEX
{
zhangsan = 0,
lisi,
wangwu,
chenliu,
cuihua,
}
这样通过索引枚举中各个人的名字作为数组中的元素位置即可快速查询某个人的成绩等信息。
2.给定n个学生的成绩,要求有多少学生超过了平均分:
#include <stdio.h> //导如输入输出头文件
int main(){
//主函数
int cj[100]={0};//定义数组
int n;
int count=0;//定义计数器,统计有多少人达到平均分
scanf("%d",&n);
int i=0;
//读入数据
for(i=0;i<n;i++){
scanf("%d",&cj[i]);
}
//对数据进行求和
double sum=0;
for(i=0;i<n;i++){
sum+=cj[i];
}
//求平均分
double arg=sum/n;
//判断有多少人达到平均分;
for(i=0;i<n;i++){
if(cj[i]>arg){
count++;
}
}
//输出平均分和人数
printf("平均分为:%0.2f\n超过平均分的人有:%d个\n",arg,count);
return 0;
}
三.结束: