如何实现三地灯控制c语言程序设计
时间: 2024-09-25 12:04:03 浏览: 32
在C语言中,设计一个模拟三个地方(例如A、B、C)的灯控制程序,你可以使用结构体和指针来创建一个简单的模型。首先,我们可以定义一个灯的状态结构体:
```c
typedef enum { OFF, ON } LightState;
struct Light {
char location[10]; // 地点名
LightState state; // 灯状态
};
```
然后,可以创建一个数组来表示这三盏灯,并设置初始状态:
```c
Light lights[3] = {
{"A", OFF},
{"B", OFF},
{"C", OFF}
};
```
接下来,编写函数来控制灯的开关操作:
```c
void turnOn(Light *light) {
light->state = ON;
}
void turnOff(Light *light) {
light->state = OFF;
}
// 更简洁的方式可以提供一个通用的开关函数,接收状态枚举作为参数
void toggleLight(Light *light, LightState new_state) {
light->state = (light->state == OFF) ? ON : OFF;
}
```
为了能够从外部访问并控制这些灯,可以创建主函数接受用户输入,并通过指针传递灯的地址:
```c
int main() {
int choice, index;
printf("Choose a location (A, B, C): ");
scanf("%s", lights[0].location); // 首先假设用户输入的是A
while (1) {
printf("\nOptions:\n1. Turn on\n2. Turn off\n3. Toggle\n4. Quit\n");
scanf("%d", &choice);
if (choice == 4) break;
for (index = 0; index < 3; index++) {
if (strcmp(lights[index].location, lights[0].location) == 0) {
switch(choice - 1) {
case 0: turnOn(&lights[index]); break;
case 1: turnOff(&lights[index]); break;
case 2: toggleLight(&lights[index], lights[index].state); break;
}
}
}
}
return 0;
}
```
在这个例子中,用户可以选择地点和操作,然后对应的灯就会改变状态。注意,在实际应用中,可能需要处理更复杂的情况,比如错误输入验证。
阅读全文