用C语言编写实现所有红灯亮5秒,去灯灭。黄灯亮2秒,其他灯灭。绿灯亮5秒,其他灯灭。
时间: 2024-12-16 07:32:18 浏览: 5
在C语言中,我们可以使用定时器函数如`delay()`(这通常需要包含头文件`<unistd.h>`),结合条件控制结构(如`if`、`while`等)来实现这个简单的交通信号灯控制系统。这里假设我们已经有了一个开关数组来表示各个灯的状态,并且每个灯对应一个索引。下面是一个简化的示例:
```c
#include <stdio.h>
#include <unistd.h> // 包含延迟函数
#define NUM_LIGHTS 4 // 红绿黄三色灯的数量
#define RED 0
#define GREEN 1
#define YELLOW 2
void switchLight(int lightIndex, int state) {
printf("Switching light %d to %s.\n", lightIndex, state == 1 ? "on" : "off");
}
int main() {
int lights[NUM_LIGHTS] = {RED, 0, 0, GREEN}; // 初始状态设置
int currentLight = 0; // 当前处理的灯
while (true) {
if (lights[currentLight] == RED) {
switchLight(currentLight, 0); // 红灯亮5秒
delay(5000 * 1000); // 5秒延迟(毫秒)
switchLight(currentLight, 1);
} else if (lights[currentLight] == GREEN) {
switchLight(currentLight, 0); // 绿灯亮5秒
delay(5000 * 1000);
switchLight(currentLight, 1);
} else if (lights[currentLight] == YELLOW) {
switchLight(currentLight, 0); // 黄灯亮2秒
delay(2000 * 1000);
switchLight(currentLight, 1);
}
// 循环到下一个灯
currentLight = (currentLight + 1) % NUM_LIGHTS;
}
return 0;
}
```
阅读全文