C语言及程序设计进阶例程-29 枚举类型及其应用
2015-06-22 22:41
706 查看
贺老师教学链接 C语言及程序设计进阶 本课讲解
He先生方案一:用整型表示品牌、颜色
方案二:应用枚举类型
枚举再例
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; }
相关文章推荐
- C语言及程序设计进阶例程-28 动态规划法问题求解
- C语言及程序设计进阶例程-27 贪心法问题求解
- C语言及程序设计进阶例程-26 回溯溯法问题求解
- C语言及程序设计进阶例程-25 排序问题及其求解
- C语言及程序设计进阶例程-24 查找问题及其求解
- 堆排序算法学习(C++代码)
- C语言-统计一行句子中单词的个数
- 将一个二维数组行和列的元素互换,存到另一个二位数组中
- C语言回顾(八、结构体,联合/共用体,枚举)——iOS开发基础
- C++文件读写详解(ofstream,ifstream,fstream)
- 黑马程序员--C语言关键字,注释
- c++中*、->、&
- 冒泡排序
- 【学习笔记】【C语言】二维数组
- C++ 关键字typeid
- OJ第二批——Problem B:处理成绩(C++类训练)
- Qt中C++运算符重载
- OJ第二批——Problem A:C++类实现最大数的输出
- 第14章 C++代码重用
- C语言static 具体分析