帮我用C语言设计四个红灯亮五秒后熄灭,过一秒后,黄灯闪烁三次每次闪烁持续一秒, 绿灯亮五秒后熄灭,过一秒后黄灯闪烁三次每次闪烁持续一秒为一起的一个循环
时间: 2024-10-10 07:09:54 浏览: 16
下面是一个简单的C语言程序,用于模拟交通灯的信号切换过程:
```c
#include <stdio.h>
#include <delay.h>
// 定义灯的颜色状态和延迟时间
enum Color {RED, YELLOW, GREEN};
const int DELAY_RED = 5000;
const int FLASH_YELLOW = 1000;
void trafficLight(int color) {
switch(color) {
case RED:
while (DELAY_RED > 0) {
printf("Red light is on.\n");
delay_ms(DELAY_RED);
DELAY_RED -= FLASH_YELLOW;
}
printf("Red light off.\n");
break;
case YELLOW:
for (int i = 0; i < 3; i++) {
printf("Yellow light flashing.\n");
delay_ms(FLASH_YELLOW);
delay_ms(FLASH_YELLOW);
}
printf("Yellow light off.\n");
break;
case GREEN:
while (DELAY_RED > 0) {
printf("Green light is on.\n");
delay_ms(DELAY_RED);
DELAY_RED -= FLASH_YELLOW;
}
printf("Green light off.\n");
break;
default:
printf("Invalid color.\n");
}
}
int main(void) {
enum Color cycle[4] = {RED, YELLOW, GREEN, RED}; // 循环顺序
for (int i = 0; i < sizeof(cycle)/sizeof(cycle[0]); i++) {
trafficLight(cycle[i]);
// 间隔一秒再开始下一个颜色
delay_ms(1000);
}
return 0;
}
```
这个程序首先定义了三种颜色的状态以及相关的延时,然后在`trafficLight`函数里实现了每种颜色的状态转换。主函数中按红、黄、绿的顺序依次调用,并加上了一秒的间隔。请注意,这个程序假设你已经包含了一个`delay.h`头文件,其中定义了`delay_ms`函数来进行延迟操作,如果你的实际环境中没有这样的函数,你需要用适当的延时方法替换。
阅读全文