原有代码:

#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语言对象方式化解相关推荐

  1. python中case的用法_python中Switch/Case实现的示例代码

    python 的 python中Switch/Case实现的示例代码 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现 ...

  2. C语言case字句有什么作用,switch case 语句的使用规则

    [规则1-21]按字母或数字顺序排列各条case语句. 如果所有的case语句没有明显的重要性差别,那就按A-B-C或1-2-3等顺序排列case 语句.这样做的话,你可以很容易的找到某条case语句 ...

  3. [转]C语言茶余饭后之if...else PK switch...case

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kevinyujm/archive/2009/02/18/3907964.aspx 在学校学C的那会儿,就已经知道swi ...

  4. c语言case怎么输入字母,如何使用switch case语句将字母转换为数字

    我正在制作黑色插口游戏,并且需要使用switch case语句将A转换为11,将T,Q,J和K转换为10,但是我不确定如何执行代码.有人会帮助我解决这个问题吗?如何使用switch case语句将字母 ...

  5. c语言 case break,C语言中switch...case语句中break的重要性

    在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...

  6. c语言中continue在case中,C語言switch case 語句中能否使用continue 關鍵字?

    在C語言的學習中,我學習到switch case語句,我發現不能使用continue關鍵字. 代碼如下: #include int main() { int a; printf("input ...

  7. c语言数码管显示时间,求数码管设计时钟表(C语言) 电子时钟?

    数码管设计时钟表(C语言) 2008-05-30 00:45 声明: 实钟程序刚写成,通过实验板验证.正确无误.但还程序还没最优化.希望有高手看到提宝贵意见,本人感激不尽. ;采用AT51的8位电子钟 ...

  8. c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...

    [判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...

  9. c语言圈复杂度switch,C语言switch/case圈复杂度优化重构

    软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度 ...

最新文章

  1. python编写自定义模块_python 自定义Server酱模块编写
  2. LinkedList 真的是查找慢增删快?
  3. php 子类名,php的继承方法获取子类名
  4. python 操作ps_使用Python分离出ps的输出
  5. ssldump0.9b3版本的源码分析
  6. 这些年微软相关的技术总结, Javascript在客户端的使用
  7. ssl提高组国庆模拟赛【2018.10.7】
  8. linux 打包排除多个目录,tar打包整个目录(可排除子目录)几种方法
  9. Keil 文本对不上格
  10. Java虚拟机(JVM)概念简介
  11. Linux系统文件夹权限475,linux系统中文件的特殊权限
  12. CircularFifoQueue队列API
  13. 湖南省第六届大学生计算机程序设计竞赛---数字整除
  14. 文献管理与信息分析_全球酒店PMS行业市场现状分析,酒店信息管理全链条的灵魂...
  15. 母版页Master中Html控件img,a,javascript相对路径问题
  16. Atitit 通信技术概要 艾提拉著 目录 1. 通信系统原理(孔英会编著的图书)_百度百科.html 2 1.1. 第1章绪论1 2 1.2. 第2章信号分析基础25 2 1.3. 第3章信道5
  17. 使用Gitee和Sourcetree进行Keil版本控制
  18. 常说的七侠五义到底是什么?
  19. 2021SC@SDUSC Zxing开源代码(十)Data Matrix二维码(三)
  20. APP兼容性覆盖测试

热门文章

  1. PHP中的json_encode和json_decode
  2. string.h包含哪些函数_Excel进行数据分析常用方法及函数汇总—【杏花开生物医药统计】...
  3. vue打包路径.html问题,如何解决vue.js打包报错问题
  4. QT使用xsl将xml为html,使用xslt 2.0将属性设置为根元素(Puting attributes to the root-element with xslt 2.0)...
  5. php 字段验证类库,PHP验证类库常用数据安全验证
  6. 【Centos 7】【Docker】 安装 kafka
  7. java插入时间 mssql_JAVA操作数据库Datetime数据
  8. php程序员学什么语言好就业_php语言是什么?学好php需要掌握什么?
  9. 世界上第一台电子计算机电子逻辑原件,1、(ID10542分)世界上的第一台电子计算机使用的逻辑元件.doc...
  10. pythondes加密盒子_PYTHON实现DES加密及base64源码