学术休假期 项目3 (1)应用枚举

问题及代码:

阅读教材7.3节,了解枚举类型的一般用法。阅读下面输出He先生买车方案的程序,理解使用枚举类型的意义。

/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:He先生买车方案.cpp
*作    者:冷基栋
*完成日期:2015年2月26日
*版 本 号:v1.0
*/
#include <iostream>
using namespace std;
enum Color {red,black,white};
enum Brand {lavida,tiggo,skoda};
int main( )
{
  int color,brand;
  for(color=red; color<=white; color++)
    for(brand=lavida; brand<=skoda; brand++)
      if(!((color==red&&brand==tiggo)
           ||(color==white&&brand==skoda)))
      {
        switch(color)
        {
        case red:
          cout<<"红";
          break;
        case black:
          cout<<"黑";
          break;
        case white:
          cout<<"白";
          break;
        }
        switch(brand)
        {
        case lavida:
          cout<<"Lavida"<<endl;
          break;
        case tiggo:
          cout<<"Tiggo"<<endl;
          break;
        case skoda:
          cout<<"Skoda"<<endl;
          break;
        }
      }
  return 0;
}

运行结果:

知识点总结:

枚举类型在使用中有以下规定:

1. 枚举值常量,不是变量。不能在程序中用赋值语句再对它赋值。

2. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。。如一定要把数值赋予枚举变量,则必须用强制类型转换

如:

?


1

a=(enumweekday)2;

特别注意:在VS2010等编译器中,强制转换格式应为:(weekday)2,如果前面加上了enum,编译时会出现“类型重定义”的错误。

其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:

?


1

a=tue;

还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

?


1

2

3

4

5

6

7

输出结果:

1 monday 2 tuesday 3 wendsday 4 thursday 5 friday

6 saturday 7 sunday 8 monday 9 tuesday 10 wendsday

11 thursday 12 friday 13 saturday 14 sunday 15 monday

16 tuesday 17 wendsday 18 thursday 19 friday 20 saturday

21 sunday 22 monday 23 tuesday 24 wendsday 25 thursday

26 friday 27 saturday 28 sunday 29 monday 30 tuesday

3. 如果枚举值与一些关键字冲突,例如:

?


1

enum course{begin,then,end};

由于程序有可能使用了iostream,并且使用了命名空间std,这时如果直接使用end进行赋值就有可能出现“不明确”符号的错误。解决此问题,有两个方法:

(1)定义枚举值时应避免使用常用关键字,可以加前缀进行区分

例如:

?


1

enum course{e_begin,e_then,e_end};

(2)可以在枚举值前面加入枚举类型:course::end

学习心得:

好好学习 天天向上



时间: 2024-09-30 15:19:48

学术休假期 项目3 (1)应用枚举的相关文章

学术休假期 项目4-点和距离

问题及代码: 读程序,写出函数的定义,注意其中枚举类型的用法 /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:点和距离.cpp *作 者:冷基栋 *完成日期:2015年2月26日 *版 本 号:v1.0 */ #include <iostream> #include <Cmath> using namespace std; enum SymmetricStyle {axisx,axisy,point}

学术休假期 项目3(2)-平面点的对称点

问题及代码: 设计函数,可以按指定的方式,输出一个平面点的对称点 下面给出枚举类型定义和main函数(测试函数),请写出output函数的实现. /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:平面点.cpp *作 者:冷基栋 *完成日期:2015年2月26日 *版 本 号:v1.0 */ #include<iostream> using namespace std; enum SymmetricStyle {a

学术休假期 项目5-读懂共同体

问题及代码: 运行下面的程序,并解释运行结果. /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:点和距离.cpp *作 者:冷基栋 *完成日期:2015年2月26日 *版 本 号:v1.0 */ #include <iostream> using namespace std; union un { int i; char c[4]; }; int main() { union un x; x.c[0]='A';

学术休假期 项目2-猴子选大王 (动态链表)

链表关系好混乱 /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:猴子选大王.cpp *作 者:冷基栋 *完成日期:2015年2月12日 *版 本 号:v1.0 * *问题描述:一群猴子,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王.输入m和n,输出为大王的猴子是几号. 提示1:(1)链

学术休假期 项目1-动态链表体验2

 (2)编写函数void search(int x),输出链表中是否有值为x的结点. #include <iostream> using namespace std; struct Node { int data; //结点的数据 struct Node *next; //指向下一结点 }; Node *head=NULL; //将链表头定义为全局变量,以便于后面操作 void make_list(); //建立链表 void out_list(); //输出链表 int main( )

学术休假期 项目1-动态链表体验3

 (3)编写函数delete_first_node(),删除链表中的第一个结点. #include <iostream> using namespace std; struct Node { int data; //结点的数据 struct Node *next; //指向下一结点 }; Node *head=NULL; //将链表头定义为全局变量,以便于后面操作 void make_list(); //建立链表 void out_list(); //输出链表 void delete_fi

学术休假期 项目1-动态链表体验 代码

 下面是一个建立动态链表的程序.阅读程序,在草稿纸上画出链表建立的过程,借此学会如何建立链表.然后按要求改造程序. #include <iostream> using namespace std; struct Node { int data; //结点的数据 struct Node *next; //指向下一结点 }; Node *head=NULL; //将链表头定义为全局变量,以便于后面操作 void make_list(); //建立链表 void out_list(); //输出

学术休假期 项目1-动态链表体验1

 (1)编写make_list2()函数建立链表,使建立链表时,后输入的数据,将新输入的数字对应的结点放在链表末尾.若输入为3 5 2 9 4 7 0,建立的链表为: #include <iostream> using namespace std; struct Node { int data; //结点的数据 struct Node *next; //指向下一结点 }; Node *head=NULL; //将链表头定义为全局变量,以便于后面操作 void make_list(); //

学术休假期 大奖赛计分系统进阶版

问题及代码: /* *copyright (c) 2014,烟台大学计算机学院 *all rights reserved. *文 件 名 : 大奖赛记分系统.cpp *作 者 :冷基栋 *完成日期 :2015年3月5号 *版 本 号 :v1.0 * *问题描述 :大奖赛记分系统 *输入描述 :选手人数,评委人数,选手得分 *程序输出 :选手最后得分,排名 */ #include <iostream> #include <iomanip> #include <cstdio>