C语言十字路口红绿灯通行和时间
时间: 2024-09-27 09:17:16 浏览: 34
在C语言中模拟一个简单的十字路口红绿灯控制系统,可以使用计时器和状态机的概念。我们可以创建四个状态分别代表红、黄、绿灯以及停止等待(通常是黄灯之后)。以下是基本步骤:
1. 定义变量表示灯的颜色和时间周期:比如用整数数组(如`red`, `yellow`, `green`),分别对应红黄绿灯的时间;用全局变量`timer`存储当前灯的状态和剩余时间。
2. 创建定时器函数(例如使用`sleep()`函数),设置红绿灯交替的时间间隔,例如红灯5秒,黄灯3秒,绿灯4秒,总共12秒一轮循环。
```c
#include <stdio.h>
#include <unistd.h> // 包含用于暂停执行的库
#define RED_TIME 5000 // 红灯持续时间毫秒
#define YELLOW_TIME 3000 // 黄灯持续时间毫秒
#define GREEN_TIME 4000 // 绿灯持续时间毫秒
void changeLights(int *lightStatus) {
if (*lightStatus == RED_TIME) {
// 红灯转黄
*lightStatus = YELLOW_TIME;
} else if (*lightStatus == YELLOW_TIME) {
// 黄灯转绿
*lightStatus = GREEN_TIME;
} else {
// 绿灯转红
*lightStatus = RED_TIME;
}
}
void simulateTrafficLight() {
int timer = RED_TIME; // 初始设置为红灯时间
while (1) {
changeLights(&timer); // 更新灯状态
printf("当前灯色: ");
switch (timer) {
case RED_TIME:
printf("红色\n");
break;
case YELLOW_TIME:
printf("黄色\n");
break;
case GREEN_TIME:
printf("绿色\n");
break;
}
sleep(timer / 1000); // 持续相应时间后切换
}
}
```
3. 主函数中启动信号量并调用`simulateTrafficLight()`函数。
注意这是一个简化版的示例,实际应用可能需要更复杂的逻辑处理和错误检查,例如车辆到达检测和行人过街需求等。此外,对于真正的交通信号灯控制,通常会由专用硬件设备完成,并受严格的法律监管。
阅读全文