C语言及程序设计进阶例程-29 枚举类型及其应用

简介: 贺老师教学链接 C语言及程序设计进阶 本课讲解He先生方案一:用整型表示品牌、颜色#include <stdio.h>int main( ){ int brand,color; //brand=0,1,2分别表示Lavida、Tiggo和Skoda //color=0,1,2分别表示红黑白 for(color=0; c

贺老师教学链接 C语言及程序设计进阶 本课讲解

He先生方案一:用整型表示品牌、颜色

#include <stdio.h>
int main( )
{
    int brand,color;
    //brand=0,1,2分别表示Lavida、Tiggo和Skoda
    //color=0,1,2分别表示红黑白
    for(color=0; color<3; color++)
        for(brand=0; brand<3; brand++)
            if(!((color==1&&brand==1)||(color==2&&brand==2)))
            {
                switch(color)
                {
                case 0:
                    printf("红");
                    break;
                case 1:
                    printf("黑");
                    break;
                case 2:
                    printf("白");
                    break;
                }
                switch(brand)
                {
                case 0:
                    printf("Lavida\n");
                    break;
                case 1:
                    printf("Tiggo\n");
                    break;
                case 2:
                    printf("Skoda\n");
                    break;
                }
            }
    return 0;
}
//不要红Tiggo,但条件明显错了,成了不要黑Tiggo,这种错误很容易造成,不容易找出

方案二:应用枚举类型

#include <stdio.h>
int main( )
{
    enum Color {red,black,white};
    enum Brand {lavida,tiggo,skoda};
    enum Color color;
    enum Brand 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:
                    printf("红");
                    break;
                case black:
                    printf("黑");
                    break;
                case white:
                    printf("白");
                    break;
                }
                switch(brand)
                {
                case lavida:
                    printf("Lavida\n");
                    break;
                case tiggo:
                    printf("Tiggo\n");
                    break;
                case skoda:
                    printf("Skoda\n");
                    break;
                }
            }
    return 0;
}
//用枚举,除了好读,方案一的错误也不容易发生

枚举再例

#include <stdio.h>
#include <math.h>

enum SymmetricStyle { axisx,axisy,point};//分别表示按x轴, y轴, 原点对称
struct CPoint
{
    double x;  // 横坐标
    double y;  // 纵坐标
};

double distance(struct CPoint p1, struct CPoint p2)   // 两点之间的距离
{
    double d, dx, dy;
    dx = p1.x-p2.x;
    dy = p1.y-p2.y;
    d=sqrt(dx*dx+dy*dy);
    return d;

}
double distance0(struct CPoint p)// 到原点的距离
{
    double d;
    d=sqrt(p.x*p.x+p.y*p.y);
    return d;
}
struct CPoint SymmetricAxis(struct CPoint p, enum SymmetricStyle style)   // 返回对称点
{
    struct CPoint p1;
    switch(style)
    {
    case axisx:
        p1.x=p.x;
        p1.y=-p.y;
        break;
    case axisy:
        p1.x=-p.x;
        p1.y=p.y;
        break;
    case point:
        p1.x=-p.x;
        p1.y=-p.y;
    }
    return p1;
}

int main( )
{
    struct CPoint p1 = {2, 2}, p2={-2, 4}, p;
    printf("第1个点p1: (%.2lf, %.2lf)\n", p1.x, p1.y);
    printf("第2个点p2: (%.2lf, %.2lf)\n", p2.x, p2.y);
    printf("两点的距离为:%.2lf\n", distance(p1, p2));
    printf("p1到原点的距离为:%.2lf\n",distance0(p1));
    p = SymmetricAxis(p1, axisx);
    printf("p1关于x轴的对称点为:(%.2lf, %.2lf)\n", p.x, p.y);
    p = SymmetricAxis(p1, axisy);
    printf("p1关于x轴的对称点为:(%.2lf, %.2lf)\n", p.x, p.y);
    p = SymmetricAxis(p1, point);
    printf("p1关于原点的对称点为:(%.2lf, %.2lf)\n", p.x, p.y);
    return 0;
}
目录
相关文章
|
30天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
60 4
ly~
|
1月前
|
网络协议 算法 关系型数据库
C语言的应用
C 语言因其高效性和对硬件的直接访问能力,在多个领域有广泛应用。在系统软件领域,它被用于开发操作系统(如 Unix 和 Linux 的内核)和嵌入式系统(如汽车电子控制系统)。在游戏开发中,C 语言常用于构建游戏引擎的底层部分(如 Unity 和 Unreal Engine 的核心模块)及性能要求高的独立游戏。此外,C 语言也用于数据库管理系统(如 MySQL 和 PostgreSQL 的核心功能)和网络编程(如 TCP/IP 协议栈和网络服务器的核心模块)。
ly~
33 3
|
1月前
|
Java Unix Linux
1.3 C语言的应用范围
C语言自20世纪80年代以来一直是主流编程语言,适用于小型计算机、个人电脑及大型机。因其高效紧凑且易于修改和移植,广泛用于软件开发。尽管后来C++和JAVA流行起来,但C语言仍然是软件行业核心,并在嵌入式系统、科学编程和操作系统开发如Linux中扮演重要角色。即使到现在,掌握C语言仍是一项重要技能。不是必须得是计算机专家才能使用C语言,学习C语言同时也能学到很多C++的知识。
49 8
|
2月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
|
2月前
|
存储 算法 C语言
C语言程序设计核心详解 第一章:数制及转换与ASCII码
本专栏旨在夯实C语言基础,涵盖基础知识与进阶内容,助力解决自命题考试和考研问题,为数据结构与算法设计奠定坚实基础。内容包括数制及其转换、ASCII码、内存管理、机器码等,重点讲解二进制、八进制、十六进制的概念与转换方法,并介绍C语言的结构、数据类型和标识符规范。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。