C语言enum(枚举)即相关练习题

目录

一:枚举(enum):

1.概念:

2.一般形式:

3.枚举变量的定义(类似于结构体一样,有3种方式定义枚举变量):

4.枚举使用注意:

5.实例分析:

二.将枚举、数组和结构体结合起来使用例题:

1.输入5个人的姓名、学号、成绩,但是光靠记忆是记不住哪个人的成绩是数组中第几个元素:

2.给定n个学生的成绩,要求有多少学生超过了平均分:

下期继续学习......


 

一:枚举(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;
}

三.结束:

下期继续学习......

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三鄯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值