如何用C语言编程模拟一个简单的十字路口交通信号灯控制系统?
时间: 2024-12-14 14:21:30 浏览: 25
在C语言中,我们可以创建一个简单的交通信号灯控制程序来模拟十字路口的红绿灯。这里我们假设有三个信号灯,分别代表直行、左转和右转。每个信号灯可以用一个整数变量来表示其状态(0-红灯,1-黄灯,2-绿灯)。下面是一个基本的实现示例:
```c
#include <stdio.h>
#include <unistd.h> // 使用usleep()函数暂停
// 定义信号灯的状态
enum Light { RED = 0, YELLOW = 1, GREEN = 2 };
typedef struct {
enum Light direction;
int status;
} TrafficLight;
// 更新信号灯状态
void update_lights(TrafficLight lights[]) {
if (lights[0].status == GREEN) {
lights[0] = {RED, 0}; // 直行车变红灯
lights[1] = {GREEN, 0}; // 左转弯绿灯
lights[2] = {RED, 0}; // 右转弯变红灯
} else if (lights[1].status == GREEN) { // 同理处理其他方向
// 更改相应方向的信号灯
}
}
int main() {
TrafficLight lights[] = { {RED, 0}, {RED, 0}, {RED, 0} }; // 初始化所有灯为红灯
while (true) {
update_lights(lights);
printf("Direction: %d - Status: %d\n", lights[0].direction, lights[0].status); // 输出当前信号灯状态
usleep(5000000); // 暂停5秒,模拟时间流逝
}
return 0;
}
```
在这个例子中,我们通过一个无限循环不断更新信号灯状态,并使用`usleep()`函数模拟每种颜色持续的时间。在实际应用中,你可能会添加更复杂的逻辑,比如计数器来决定每个信号灯的切换周期,或者用户输入来改变模式。
阅读全文