//#include//#define _CRT_SECURE_NO_WARNINGS

//此处是解决scanf()报错问题,我是在编译器里解决,要运行的话请放开注释

int run_led(int a, int b)//开灯回调函数

{

return 1;

}

int off1_led(int a, int b)//关灯回调函数

{

return 0;

}

int off_led(int a, int b)//关灯处理函数,此处1表示按下,0表示没按,因此判断一样。

{

if (a == 1 && b == 0 || a == 0 && b == 1)//就算两次输入一样,也能关灯

{

return 1;

}

else if (a == 1 && b == 1 || a == 0 && b == 0)

{

return 0;

}

}

int judge_input(int a, int b)//开灯部分的处理函数

{

if (a == 1 && b == 0|| a == 0 && b == 1)//正确输入只有这两种

{

return 1;

}

else if (a == 1 && b == 1 || a == 0 && b == 0)//错误输入会让重新输入

{

return 0;

}

}

int main()

{

//以scanf()函数模拟输入,1表示开关按下,0表示开关没按

//以printf()输出c的值,1表示的灯亮,0表示灯灭;

//a表示楼层1,b表示楼层2

int c = 0;//对灯的值初始化

int count = 1;//对用户的输入次数进行计数;

while (1)

{

int a = 0;

int b = 0;

int d = 0;

printf("请输入您的选择\n");

scanf("%d %d", &a, &b);//接收开关的模拟量

++count;//记录用户是第几次输入

Sleep(100);//设置延时模拟用户按键时间过长的情况

if (count % 2 == 0)//这是偶数次输入,也就是开灯部分

{

d = judge_input(a, b);//将接受到的值传入判断输入是否正确判断函数

if (d == 1 )

{

c = run_led(a, b);

printf("%d 灯点亮\n", c);

continue;

}

else

{

printf("您的输入有误,请重新输入\n");

--count;//当输入有误时将技术减1,从程序意义上也就是忽略这次操作

continue;

}

}

if (count % 2 == 1)//这是奇数次操作,也就是关灯部分

{

d = off_led(a, b);//将接受到的值传入判断输入是否正确判断函数

if (d == 1 )

{

c = off1_led(a, b);

printf("%d 灯关闭\n", c);

continue;

}

else

{

printf("您的输入有误,请重新输入\n");

--count;

continue;

}

}

}

system("pause");

return 0;

//关于无操作五分钟后关灯问题,在.c文件中无法开启多线程,我能力有限没法实现。

}

C语言两个按键分别控制两个灯,用C语言模拟楼道灯开关控制程序,两个开关都能控制灯的亮灭...相关推荐

  1. C语言两个按键分别控制两个灯,单片机如何实现两个按键同时按下,两个灯同时点亮?如何修改这个程序?...

    #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16 ...

  2. 基于FPGA的两位按键控制LED数码管加减计数实验

    两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...

  3. 随想杂谈--一个GPIO控制两个按键的方法

    随想杂谈--一个GPIO控制两个按键 最近在一个工程中,受限于单片机管脚不够的原因,不得不使用一个GPIO口控制两个按键, 在这里顺便记录下使用的过程.说起用一个GPIO口控制两个按键的方法,一般来说 ...

  4. Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块

    8. 两路按键魔块 模块一共有两路硅胶按键,可以检测按键是否按下.当按键按下时,对应按键背后的红色LED会亮,并且返回触发信号,按键按下事件为真.另外按键键帽上可安装乐高十字插销. 8.1. 详细介绍 ...

  5. Ubuntu 20.04.2.0 LTS 下Geany 1.36的“编译文件”和“生成当前文件”两个按键不可用

    [问题描述] Ubuntu 20.04.2.0 LTS 下利用 sudo apt-get install geany 命令安装Geany 1.36后,利用Geany 1.36写C++语言程序后,会出现 ...

  6. 51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)

    51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00--99) 功能描述: 开关key1控制实现每按一次,数码管数字加1,实现00-99的循环 开关key2按键按一下实现数码管减1, ...

  7. R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集

    R语言union函数计算数据对象(vector.list.dataframe)的并集:union函数计算两个vector向量.dataframe.列表list的并集 目录

  8. 小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?通过该试验加深对句柄的理解!!...

    小实验:用创建进程()打开计算器,然后关闭进程句柄.再用打开进程(进程ID),使用两次,得到两个进程句柄.实验目的:这两个进程句柄都能控制这个进程吗? .版本 2 .程序集 窗口程序集1 .子程序 _ ...

  9. jQuery同时监听两个事件---实现同时操控两个按键

    我们都知道因为js是单线程的,所以没有可以同时触发键盘两个事件的方法 今天我们就来做一个可以实现这个功能方法 先来看一下成品图效果 接下来我们来看下具体是怎么实现的 注释写在了代码里面 1 <! ...

最新文章

  1. mysql基础(九) 索引和视图
  2. 在Linux下安装配置phpMyAdmin步骤
  3. 用shp制作geoJson格式地图数据(shp convert to geoJson)
  4. hibernate关系映射(一对一)
  5. LOJ#2542 随机游走
  6. virtualbox 该内存不能为written_系统提示“该内存不能为read”的原因和解决办法...
  7. 欢迎广大技术爱好者参与JEECG开源项目
  8. 如何优雅的设计 React 组件
  9. Linux环境运行Jmeter
  10. 后浪“95”获 CVPR 2020 最佳论文,前得主这样解读
  11. Spring后处理Bean(BeanPostProcessor 接口)Bean增强
  12. 西门子1500和300哪个贵_西门子S7-1500凭什么秒杀S7-300-400?
  13. PHP 遍历文件夹及文件类及处理类
  14. [转]FTP搜索引擎的设计与实现(优化版)
  15. SASS-HRM-Day04
  16. opencv打开摄像头
  17. 各种泵的图形符号_常见液压系统中液压元件图形符号
  18. eXosip中Event事件学习笔记
  19. 微博运营的5个经典案例
  20. BUUCTF 每日打卡 2021-8-11

热门文章

  1. 蓝底证件照如何制作?快速学习教程来啦
  2. 如何在网站中插入视频
  3. 营销就是花架子?看一家餐厅是如何利用一场活动,赚到大钱的?
  4. windows修改磁盘(C:)自定义图标
  5. html让表格竖着排列,html表格,表头竖向固定,横向滚动的例子
  6. 大数据挖掘与人工智能线上班课程
  7. ArcGIS栅格导出成tiff并设置为无黑边
  8. java 微信https 证书_Java中的微信支付(2):API V3 微信平台证书的获取与刷新
  9. 使用jlink精简一个jre运行环境
  10. python中cv2.putText和cv2.getTextSize