一个红绿灯路口南北走向的车流量是东西,走向车流量的两倍,其中,南北走向为四个赤道,一个左转车道,两个直行,一个右转车道,红绿灯控制左转指示灯,执行指示灯,右转指示灯,东西走向的车道是两车道内道,为左转和直行外道为右转和直行,交通灯只有执行红绿灯控制,不单独区分左转和右转指示灯。请合理设置交通灯的转换规则和各种信号灯的灯的时长,用C语言编写一个程序来模拟信号灯的控制。
时间: 2023-09-18 15:13:51 浏览: 183
以下是一个简单的交通灯控制程序的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NORTH_SOUTH_LIGHT 0
#define EAST_WEST_LIGHT 1
#define GREEN_LIGHT 0
#define YELLOW_LIGHT 1
#define RED_LIGHT 2
const int GREEN_TIME = 10; // 绿灯时间
const int YELLOW_TIME = 3; // 黄灯时间
const int RED_TIME = 10; // 红灯时间
void print_light_status(int north_south_light, int east_west_light) {
printf("North-South Light: ");
if (north_south_light == GREEN_LIGHT) {
printf("Green\n");
} else if (north_south_light == YELLOW_LIGHT) {
printf("Yellow\n");
} else {
printf("Red\n");
}
printf("East-West Light: ");
if (east_west_light == GREEN_LIGHT) {
printf("Green\n");
} else if (east_west_light == YELLOW_LIGHT) {
printf("Yellow\n");
} else {
printf("Red\n");
}
}
int main() {
srand(time(NULL)); // 初始化随机数种子
int north_south_cars = 4 + rand() % 5; // 随机生成南北方向车流量
int east_west_cars = north_south_cars * 2; // 计算东西方向车流量
int north_south_light = GREEN_LIGHT; // 初始南北方向绿灯
int east_west_light = RED_LIGHT; // 初始东西方向红灯
for (int i = 1; i <= 30; i++) { // 模拟30秒
printf("Time: %d\n", i);
print_light_status(north_south_light, east_west_light);
if (north_south_light == GREEN_LIGHT) { // 南北方向绿灯
if (north_south_cars > 0) {
printf("North-South cars are passing...\n");
north_south_cars--;
} else if (i >= GREEN_TIME && i < GREEN_TIME + YELLOW_TIME) {
north_south_light = YELLOW_LIGHT; // 绿灯变黄灯
} else if (i >= GREEN_TIME + YELLOW_TIME) {
north_south_light = RED_LIGHT; // 黄灯变红灯
east_west_light = GREEN_LIGHT; // 东西方向绿灯
}
} else if (east_west_light == GREEN_LIGHT) { // 东西方向绿灯
if (east_west_cars > 0) {
printf("East-West cars are passing...\n");
east_west_cars--;
} else if (i >= GREEN_TIME && i < GREEN_TIME + YELLOW_TIME) {
east_west_light = YELLOW_LIGHT; // 绿灯变黄灯
} else if (i >= GREEN_TIME + YELLOW_TIME) {
east_west_light = RED_LIGHT; // 黄灯变红灯
north_south_light = GREEN_LIGHT; // 南北方向绿灯
}
}
printf("\n");
}
return 0;
}
```
该程序随机生成南北方向车流量,并根据车流量和绿灯时间、黄灯时间、红灯时间等参数,模拟交通灯的控制过程。在每个时刻,程序输出当前时间、各个方向的信号灯状态,并根据信号灯状态和车流量决定车辆通过的情况,同时根据时间变化和信号灯状态的变化,更新信号灯状态。
需要注意的是,该程序仅为简单示例,实际的交通灯控制系统需要考虑更多的因素,如不同时间段的车流量变化、不同车道的车流量、左转和右转车辆的区分等等。
阅读全文