C语言十字路口红绿灯各方向通行及相应时间设置时间
时间: 2024-09-27 18:17:24 浏览: 39
在C语言中模拟一个简单的十字路口红绿灯控制系统,可以使用结构体、数组以及定时器来表示每个方向的通行状态和时间。这里提供一个简化的示例,假设每个信号灯有四个方向(东西南北),红绿灯交替工作,每种颜色的时间分配可以根据实际需求设置。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义红绿灯的状态
typedef enum { RED, GREEN, YELLOW } LightState;
// 模拟四个方向的交通灯
struct TrafficLight {
LightState state;
int time_left; // 绿灯剩余时间
};
// 时间间隔(秒)
#define RED_TIME 30
#define GREEN_TIME 60
#define_YELLOW_TIME 5
void switchLights(struct TrafficLight lights[4]) {
for (int i = 0; i < 4; ++i) {
if (lights[i].state == GREEN) {
printf("转向 %d 的车辆,绿灯亮,%d 秒后转黄\n", i+1, lights[i].time_left);
// 更新剩余时间
lights[i].time_left--;
if (!lights[i].time_left) {
lights[i].state = RED;
}
} else if (lights[i].state == RED) {
printf("转向 %d 的车辆,红灯亮\n", i+1);
// 红灯结束后变黄灯
lights[i].state = YELLOW;
} else { // 黄灯
printf("转向 %d 的车辆,黄灯亮,即将变为红灯\n", i+1);
lights[i].time_left = 0; // 黄灯通常短暂显示,这里设定为0秒
lights[i].state = RED;
}
}
}
int main() {
struct TrafficLight lights[] = {
{RED, RED_TIME}, // 北向
{GREEN, GREEN_TIME}, // 南向
{RED, RED_TIME}, // 西向
{GREEN, GREEN_TIME} // 东向
};
srand(time(0)); // 设置随机种子
while (1) {
switchLights(lights);
// 假设每轮红绿灯切换都花费一秒
sleep(1);
}
return 0;
}
```
在这个例子中,红灯时间为30秒,绿灯时间为60秒,黄灯时间一般很短,这里是5秒。程序会无限循环地切换各个方向的信号灯状态。
阅读全文