c语言case后面多字符,多SWITCH-CASE结构时的C语言对象方式化解
原有代码:
#include
int main()
{
int n=0;
while(1)
{
scanf("%d",&n);
switch(n)
{
case 0:
printf("STATE0\n");
break;
case 1:
printf("STATE1\n");
break;
case 2:
printf("STATE2\n");
break;
default:
return 0;
}
}
return 0;
}
改造方案:
#include
#define N 3 //状态值
struct State
{
int i;
void (*CreateState)(struct State *s);
void (*Show)(struct State s);
void (*StateTrans[N])(struct State s);
};
void StateTrans0(struct State s)
{
s.i=0;
s.Show(s);
}
void StateTrans1(struct State s)
{
s.i=1;
s.Show(s);
}
void StateTrans2(struct State s)
{
s.i=2;
s.Show(s);
}
void Show(struct State s)
{
printf("State-%d\n",s.i);
}
void CreateState(struct State *s)
{
s->Show=Show;
s->StateTrans[0]=StateTrans0;
s->StateTrans[1]=StateTrans1;
s->StateTrans[2]=StateTrans2;
}
enum{ST0=0,ST1,ST2}STATE;//枚举状态
int main()
{
State s;//实例化
//初始化
s.CreateState=CreateState;
s.CreateState(&s);
//模拟状态调用
while(1)
{
scanf("%d",&STATE);
if(STATE<0||STATE>2)
{
break;
}
s.StateTrans[STATE](s);
}
getchar();
return 0;
}
c语言case后面多字符,多SWITCH-CASE结构时的C语言对象方式化解相关推荐
- python中case的用法_python中Switch/Case实现的示例代码
python 的 python中Switch/Case实现的示例代码 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现 ...
- C语言case字句有什么作用,switch case 语句的使用规则
[规则1-21]按字母或数字顺序排列各条case语句. 如果所有的case语句没有明显的重要性差别,那就按A-B-C或1-2-3等顺序排列case 语句.这样做的话,你可以很容易的找到某条case语句 ...
- [转]C语言茶余饭后之if...else PK switch...case
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kevinyujm/archive/2009/02/18/3907964.aspx 在学校学C的那会儿,就已经知道swi ...
- c语言case怎么输入字母,如何使用switch case语句将字母转换为数字
我正在制作黑色插口游戏,并且需要使用switch case语句将A转换为11,将T,Q,J和K转换为10,但是我不确定如何执行代码.有人会帮助我解决这个问题吗?如何使用switch case语句将字母 ...
- c语言 case break,C语言中switch...case语句中break的重要性
在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...
- c语言中continue在case中,C語言switch case 語句中能否使用continue 關鍵字?
在C語言的學習中,我學習到switch case語句,我發現不能使用continue關鍵字. 代碼如下: #include int main() { int a; printf("input ...
- c语言数码管显示时间,求数码管设计时钟表(C语言) 电子时钟?
数码管设计时钟表(C语言) 2008-05-30 00:45 声明: 实钟程序刚写成,通过实验板验证.正确无误.但还程序还没最优化.希望有高手看到提宝贵意见,本人感激不尽. ;采用AT51的8位电子钟 ...
- c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...
[判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...
- c语言圈复杂度switch,C语言switch/case圈复杂度优化重构
软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度 ...
最新文章
- python编写自定义模块_python 自定义Server酱模块编写
- LinkedList 真的是查找慢增删快?
- php 子类名,php的继承方法获取子类名
- python 操作ps_使用Python分离出ps的输出
- ssldump0.9b3版本的源码分析
- 这些年微软相关的技术总结, Javascript在客户端的使用
- ssl提高组国庆模拟赛【2018.10.7】
- linux 打包排除多个目录,tar打包整个目录(可排除子目录)几种方法
- Keil 文本对不上格
- Java虚拟机(JVM)概念简介
- Linux系统文件夹权限475,linux系统中文件的特殊权限
- CircularFifoQueue队列API
- 湖南省第六届大学生计算机程序设计竞赛---数字整除
- 文献管理与信息分析_全球酒店PMS行业市场现状分析,酒店信息管理全链条的灵魂...
- 母版页Master中Html控件img,a,javascript相对路径问题
- Atitit 通信技术概要 艾提拉著 目录 1. 通信系统原理(孔英会编著的图书)_百度百科.html	2 1.1. 第1章绪论1	2 1.2. 第2章信号分析基础25	2 1.3. 第3章信道5
- 使用Gitee和Sourcetree进行Keil版本控制
- 常说的七侠五义到底是什么?
- 2021SC@SDUSC Zxing开源代码(十)Data Matrix二维码(三)
- APP兼容性覆盖测试
热门文章
- PHP中的json_encode和json_decode
- string.h包含哪些函数_Excel进行数据分析常用方法及函数汇总—【杏花开生物医药统计】...
- vue打包路径.html问题,如何解决vue.js打包报错问题
- QT使用xsl将xml为html,使用xslt 2.0将属性设置为根元素(Puting attributes to the root-element with xslt 2.0)...
- php 字段验证类库,PHP验证类库常用数据安全验证
- 【Centos 7】【Docker】 安装 kafka
- java插入时间 mssql_JAVA操作数据库Datetime数据
- php程序员学什么语言好就业_php语言是什么?学好php需要掌握什么?
- 世界上第一台电子计算机电子逻辑原件,1、(ID10542分)世界上的第一台电子计算机使用的逻辑元件.doc...
- pythondes加密盒子_PYTHON实现DES加密及base64源码