网易云课堂_C语言程序设计进阶_第三周:结构:结构、类型定义、联合

3.1 枚举

3.2 结构

3.3 类型定义

3.1 枚举

枚举是一种用户定义的数据类型,它用关键字enum以如下语法来表明:

enum 枚举类型名字{名字0,...,名字n};

枚举类型名字通常并不真的使用,要用的是在大括号里的名字,因为它们就是常量符号,它们的类型是int,值则依次从0到n。如:

enum colors{red, yellow, green};

就创建了三个常量,red的值是0,yellow的值是1,而green的值是2

当需要一些可以排列起来的常量值时,定义枚举的意义就是给了这些常量值的名字

套路:自动计数的枚举

这样需要遍历所有的枚举量或者需要建立一个用枚举量做下标的数组的时候就很方便了

 1 #define _CRT_SECURE_NO_WARNINGS
 2
 3 #include <stdio.h>
 4
 5 enum colors
 6 {
 7     red, yellow, green, numcolors//枚举的套路,最后一个放颜色的数量
 8 };
 9
10 main()
11 {
12     int color = -1;
13     char *colorsnames[numcolors] = { "red","yellow","green" };
14     char *colorname = NULL;
15
16     printf("输入你喜欢的颜色的代码:");
17     scanf("%d", &color);
18
19     if (color >= 0 && color < numcolors)
20     {
21         colorname = colorsnames[color];
22     }
23     else
24     {
25         colorname = "unknown";
26     }
27
28     printf("你喜欢的颜色是%s\n", colorname);
29
30     system("pause");
31 }

枚举量

声明枚举量的时候可以指定值

1 enum colors
2 {
3     red = 1, yellow, green = 5
4 };

枚举只是int

即使给枚举类型的变量赋不存在的整数值也没有任何warning或error

虽然枚举类型可以当作类型使用,但是实际上很(bu)少(hao)用

如果有意义上排比的名字,用枚举比const int方便

枚举比宏(macro)好,因为枚举有int类型

3.2 结构

3.3 类型定义

时间: 2024-10-23 14:16:55

网易云课堂_C语言程序设计进阶_第三周:结构:结构、类型定义、联合的相关文章

网易云课堂_C语言程序设计进阶_第8周

8.2函数指针 8.3图形交互 8.2函数指针 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void f(int i) 5 { 6 printf("void f(),%d\n", i); 7 } 8 9 void main() 10 { 11 void(*pf)(int) = f;//函数指针 12 13 pf(10); 14 15 (*pf)(20); 16 17 (pf)(30); 18 19 system(

网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出

格式化的输入输出 printf %[flags][width][.prec][hIL]type Flag 含义 - 左对齐 + 在前面放+或- (space) 正数留空 0 0填充 1 #include <stdio.h> 2 3 void main() 4 { 5 printf("%+9d\n", 123); 6 7 printf("%9d\n", 123); 8 9 printf("%-9d\n", 123); 10 11 pri

网易云课堂_C语言程序设计进阶_第六周:程序结构:内存模型(全局变量和局部变量)、头文件、宏定义、函数指针和回调函数,ACL图形库的消息机制

6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它们 全局变量初始化 没有做初始化的全局变量会得到0值 指针会得到NULL值 只能用编译时刻已知的值来初始化全局变量 它们的初始化发生在main函数之前 被隐藏的全局变量 如果函数内部存在与全局变量同名的变量,则全局变量被隐藏 6.2 编译预处理 6.3 大程序结构

网易云课堂_C语言程序设计进阶_第五周:递归与简单算法:递归、搜索、二分搜索、简单排序_1逆序输出的数列

1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输入格式: 一系列正整数,输入-1表示结束,-1不是输入的数据的一部分. 输出格式: 按照与输入相反的顺序输出所有的整数,每个整数后面跟一个空格以与后面的整数区分,最后的整数后面也有空格. 输入样例: 1 2 3 4 -1 输出样例: 4 3 2 1 时间限制:2000ms内存限制:128000kb

网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型

C语言程序设计进阶_第一周:数据类型:整数类型.浮点类型.枚举类型 1.0数据类型 1.1整数类型 1.2浮点类型 1.3逻辑类型 1.4类型转换和条件运算 1.0数据类型 1 整数 char(%c), short, int(%d), long(%ld), long long(C99) 2 浮点数 float(%f), double(%lf), long double(C99) 3 逻辑 bool(C99) 4 指针 5 自定义类型 所表达的数的范围:char<short<int<flo

网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_2信号报告

2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一位,共分5级,用1—5数字表示. 1---Unreadable 2---Barely readable, occasional words distinguishable 3---Readable with considerable difficulty 4---Readable with prac

网易云课堂_C语言程序设计进阶_期末考试编程题部分

123123 1 字符串循环右移(5分) 题目内容: 输入一个字符串和一个非负整数N,要求将字符串循环右移N次. 输入格式: 输入在第1行中给出一个字符串,以'#'表示结束,‘#’不是字符串的一部分,字符串的长度未知,但至少有一个字符:输入的第2行给出非负整数N. 输出格式: 在一行中输出循环右移N次后的字符串. 输入样例: Hello World!# 2 输出样例: d!Hello Worl 时间限制:500ms内存限制:32000kb 2 最小包围矩形(5分) 题目内容: 给定一组二维坐标,

网易云课堂_Java语言程序设计进阶_第1周 类和对象_1分数

第1周编程题 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 第1周编程题.我们在题目说明中给出了一部分代码,你需要在这部分代码的基础上,按照题目说明编写代码,然后将两部分代码一起提交. 依照学术诚信条款,我保证此作业是本人独立完成的. 1 分数(10分) 题目内容: 设计一个表示分数的类Fraction.这个类用两个int类型的变量分别表示分子和分母. 这个类

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc