立即用c语言写一个程序要求为1. 实现流水灯从左往右逐个点亮; 2. 实现流水灯从左往右间隔点亮; 3. 从左往右依次点亮,待灯全部亮起后,下一轮保持第一个灯常亮,下下轮保持第二个灯常亮,一直到所有灯常亮。其余常见流水灯功能。
时间: 2024-03-14 10:45:39 浏览: 112
好的,以下是用 C 语言编写的流水灯程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define LED_NUM 8 // 灯的数量
#define INTERVAL 500 // 间隔时间(毫秒)
void delay(int ms) { // 延时函数
clock_t start = clock();
while (clock() - start < ms);
}
int main() {
int leds[LED_NUM] = {0}; // 灯的状态,0 表示熄灭,1 表示点亮
int i, j;
while (1) { // 循环执行流水灯程序
// 从左往右逐个点亮
for (i = 0; i < LED_NUM; i++) {
leds[i] = 1;
for (j = 0; j < LED_NUM; j++) {
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
leds[i] = 0;
}
// 从左往右间隔点亮
for (i = 0; i < LED_NUM; i++) {
leds[i] = 1;
for (j = 0; j < LED_NUM; j++) {
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
leds[i] = 0;
delay(INTERVAL);
}
// 从左往右依次点亮,保持第 i 个灯常亮
for (i = 0; i < LED_NUM; i++) {
for (j = 0; j < LED_NUM; j++) {
leds[j] = (j == i) ? 1 : 0;
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
}
// 从右往左逐个点亮
for (i = LED_NUM - 1; i >= 0; i--) {
leds[i] = 1;
for (j = 0; j < LED_NUM; j++) {
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
leds[i] = 0;
}
// 从右往左间隔点亮
for (i = LED_NUM - 1; i >= 0; i--) {
leds[i] = 1;
for (j = 0; j < LED_NUM; j++) {
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
leds[i] = 0;
delay(INTERVAL);
}
// 从右往左依次点亮,保持第 i 个灯常亮
for (i = LED_NUM - 1; i >= 0; i--) {
for (j = 0; j < LED_NUM; j++) {
leds[j] = (j == i) ? 1 : 0;
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
}
// 全部灯同时点亮和熄灭
for (i = 0; i < 2; i++) {
for (j = 0; j < LED_NUM; j++) {
leds[j] = i;
}
for (j = 0; j < LED_NUM; j++) {
printf("%d ", leds[j]);
}
printf("\n");
delay(INTERVAL);
}
}
return 0;
}
```
上述程序使用了一个 `leds` 数组来记录每个灯的状态,通过在循环中改变数组的值来实现各种流水灯效果,同时使用了 `delay` 函数来控制灯的点亮和熄灭时间。
阅读全文