两层楼楼梯中间有一灯 C,一层设置按钮开关 A,二层设置按钮开关 B;
希望达到以下功能:
1)如果灯不亮,按 A、B 两按钮均能时灯 C 点亮;
2)如果灯亮着,按 A、B 两按钮均能时灯 C 灭掉;
3)如果灯亮着,但是 5 分钟没有按键,则关掉灯 C;
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>
#include<windows.h>
void delay(int t){
int i, j, k,z;
for (z = t; z > 0; z--){
for (i = 4; i > 0; i--){
for (j = 5; j > 0; j--){
for (k = 248; k > 0; k--);
}
}
}//由于不能直接使用delay函数;
} // 建立一个使用机器周期延迟时间的函数,循环次数时4*5*248=4960次,每次循环都会判断i>0和
//i++,因此每次循环会消耗两个机器周期,则sum=sum*2=9920;又因为每个机器周期时1us所以9920us=
//9.920ms约等于10毫秒 把辅助语句加起来差不多是10毫秒;
int main(){
int A=0;
int B=0;
int C=0;
int t = 300000; //延迟300秒
while (1){
printf("1.请输入决定开关A是否是高电平:\n");
scanf("%d", &A);
printf("1.请输入决定开关B是否是高电平:\n");
scanf("%d", &B);
if (C==0 && (A == 0 && B == 0)){//开始时灯灭 判断A和B是否是低电平 如果是低电平灯C熄灭
delay(3);
C = 0;
printf("灯熄灭\n");
}
else if (C == 0 && (A == 1 && B == 1)){ //判断A和B是否是高电平 如果是低电平灯C点亮
delay(3);
C = 1;
printf("灯点亮\n");
printf("选择是否关闭,若不按开关则输入和首次输入相同的值\n"); //灯打开后进行再次进行按下开关的判断
printf("2.请输入决定开关A是否是高电平:\n");
scanf("%d", &A);
printf("2.请输入决定开关B是否是高电平:\n");
scanf("%d", &B);
if (A == 0 && B == 1){//若开关发生变动则会熄灭
C = 0;
printf("灯熄灭\n");
}
if (A == 1 && B == 0){//若开关发生变动则会熄灭
C = 0;
printf("灯熄灭\n");
}
delay(t);//开关没有变动 进入延迟函数delay进行延迟
C = 0;
printf("五分钟内开关没有按键灯熄灭\n");
}
else if (C == 0 && (A == 0 && B == 1)){ //判断A和B是否是高电平 如果是低电平灯C点亮
delay(3);
C = 1;
printf("灯点亮\n");
printf("选择是否关闭,若不按开关则输入和首次输入相同的值\n"); //灯打开后进行再次进行按下开关的判断
printf("2.请输入决定开关A是否是高电平:\n");
scanf("%d", &A);
printf("2.请输入决定开关B是否是高电平:\n");
scanf("%d", &B);
if (A == 1 && B == 1){//若开关发生变动则会熄灭
C = 0;
printf("灯熄灭\n");
}
if (A == 0 && B == 0){//若开关发生变动则会熄灭
C = 0;
printf("灯熄灭\n");
}
delay(t);//开关没有变动 进入延迟函数delay进行延迟
C = 0;
printf("五分钟内开关没有按键灯熄灭\n");
}
else if (C == 0 && (A == 1 && B == 0)){ //判断A和B是否是高电平 如果是低电平灯C点亮
delay(3);
C = 1;
printf("灯点亮\n");
printf("选择是否关闭,若不按开关则输入和首次输入相同的值\n"); //灯打开后进行再次进行按下开关的判断
printf("2.请输入决定开关A是否是高电平:\n");
scanf("%d", &A);
printf("2.请输入决定开关B是否是高电平:\n");
scanf("%d", &B);
if (A == 1 && B == 1){//若开关发生变动则会熄灭
C = 0;
printf("灯熄灭\n");
}
if (A == 0 && B == 0){//若开关发生变动则会熄灭
C = 0;
printf("灯熄灭\n");
}
delay(t);//开关没有变动 进入延迟函数delay进行延迟
C = 0;
printf("五分钟内开关没有按键灯熄灭\n");
}
else {
printf("输入错误\n");//如果数值输入错误则会报错;
}
}
system("pause");
return 0;
}