C 语言指示灯计算
曹玉坤
2011-7-5
目 录
1 概述3
2 问题描述3
3 问题分析6
4 算法7
5 代码8
6 运行结果图9
1 概述
这个关于指示灯的问题是一个非常典型的算法考验题。需要
考虑对数组的操作。本文就详细的介绍问题的算法及难点。让大
家能够清晰的了解整个算法的形成过程和最后实现。了解数组的
操作,加深对数组的理解。
2 问题描述
指示灯控制
问题描述:
N 1 N N 1
盏灯排成一排,从 到 按顺序依次编号。有 个人也从
N 1 2
到 依次编号。第一个人 (号)将灯全部关闭。第二个人 (号)
2 2 3 3 3
将凡是 和 的倍数的灯打开。第 三个人 (号)将凡是 和 的
倍数的灯做相反的处理 (如果该灯为打开的,则将它关闭;如果该灯
3
为关闭的,则将它打开)。以后的人都和 号一样,将凡是与自 己编
号相同的灯,以及是自己编号倍数的灯做相反处理。请编写程序实现。
要求:程序中要显示每一个人所做工作的过程,例如:当第 个人操i
i i N
作时,则显示将 和 的倍数的灯做相反的处理过程;当第 个人操
作之后,显示灯的最后状态。(建议:采用图形法,显示每一盏灯,
并为每一盏灯加边框,用不同的颜色显示开灯或 关灯)。
N 7
例如:当输入 为 时;
当第一个人操作时
则输出结果为:
1
第 盏灯是黑的
2
第 盏灯是黑的
3
第 盏灯是黑的
4
第 盏灯是黑的
5
第 盏灯是黑的
6
第 盏灯是黑的
7
第 盏灯是黑的
当第二个人操作时
则输出结果为:
1
第 盏灯是黑的
2
第 盏灯是亮的
3
第 盏灯是黑的
4
第 盏灯是亮的
5
第 盏灯是黑的
6
第 盏灯是亮的
7
第 盏灯是黑的
当第三个人操作时
则输出结果为:
1
第 盏灯是黑的
2
第 盏灯是亮的
3
第 盏灯是亮的
4
第 盏灯是亮的