C语言两个按键分别控制两个灯,用C语言模拟楼道灯开关控制程序,两个开关都能控制灯的亮灭...
//#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语言模拟楼道灯开关控制程序,两个开关都能控制灯的亮灭...相关推荐
- C语言两个按键分别控制两个灯,单片机如何实现两个按键同时按下,两个灯同时点亮?如何修改这个程序?...
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16 ...
- 基于FPGA的两位按键控制LED数码管加减计数实验
两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...
- 随想杂谈--一个GPIO控制两个按键的方法
随想杂谈--一个GPIO控制两个按键 最近在一个工程中,受限于单片机管脚不够的原因,不得不使用一个GPIO口控制两个按键, 在这里顺便记录下使用的过程.说起用一个GPIO口控制两个按键的方法,一般来说 ...
- Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块
8. 两路按键魔块 模块一共有两路硅胶按键,可以检测按键是否按下.当按键按下时,对应按键背后的红色LED会亮,并且返回触发信号,按键按下事件为真.另外按键键帽上可安装乐高十字插销. 8.1. 详细介绍 ...
- 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++语言程序后,会出现 ...
- 51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)
51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00--99) 功能描述: 开关key1控制实现每按一次,数码管数字加1,实现00-99的循环 开关key2按键按一下实现数码管减1, ...
- R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集
R语言union函数计算数据对象(vector.list.dataframe)的并集:union函数计算两个vector向量.dataframe.列表list的并集 目录
- 小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?通过该试验加深对句柄的理解!!...
小实验:用创建进程()打开计算器,然后关闭进程句柄.再用打开进程(进程ID),使用两次,得到两个进程句柄.实验目的:这两个进程句柄都能控制这个进程吗? .版本 2 .程序集 窗口程序集1 .子程序 _ ...
- jQuery同时监听两个事件---实现同时操控两个按键
我们都知道因为js是单线程的,所以没有可以同时触发键盘两个事件的方法 今天我们就来做一个可以实现这个功能方法 先来看一下成品图效果 接下来我们来看下具体是怎么实现的 注释写在了代码里面 1 <! ...
最新文章
- mysql基础(九) 索引和视图
- 在Linux下安装配置phpMyAdmin步骤
- 用shp制作geoJson格式地图数据(shp convert to geoJson)
- hibernate关系映射(一对一)
- LOJ#2542 随机游走
- virtualbox 该内存不能为written_系统提示“该内存不能为read”的原因和解决办法...
- 欢迎广大技术爱好者参与JEECG开源项目
- 如何优雅的设计 React 组件
- Linux环境运行Jmeter
- 后浪“95”获 CVPR 2020 最佳论文,前得主这样解读
- Spring后处理Bean(BeanPostProcessor 接口)Bean增强
- 西门子1500和300哪个贵_西门子S7-1500凭什么秒杀S7-300-400?
- PHP 遍历文件夹及文件类及处理类
- [转]FTP搜索引擎的设计与实现(优化版)
- SASS-HRM-Day04
- opencv打开摄像头
- 各种泵的图形符号_常见液压系统中液压元件图形符号
- eXosip中Event事件学习笔记
- 微博运营的5个经典案例
- BUUCTF 每日打卡 2021-8-11
热门文章
- 蓝底证件照如何制作?快速学习教程来啦
- 如何在网站中插入视频
- 营销就是花架子?看一家餐厅是如何利用一场活动,赚到大钱的?
- windows修改磁盘(C:)自定义图标
- html让表格竖着排列,html表格,表头竖向固定,横向滚动的例子
- 大数据挖掘与人工智能线上班课程
- ArcGIS栅格导出成tiff并设置为无黑边
- java 微信https 证书_Java中的微信支付(2):API V3 微信平台证书的获取与刷新
- 使用jlink精简一个jre运行环境
- python中cv2.putText和cv2.getTextSize