《算法与编程实验报告2.doc》由会员分享,可在线阅读,更多相关《算法与编程实验报告2.doc(5页珍藏版)》请在三一办公上搜索。
1、算法与编程实验报告编程题目:2指示灯控制指导教师: 杨明慧学生姓名:何凯学生学号:08934312学生班级:08093413所学专业:通信工程一 功能描述N盏灯排成一排,从1到N按顺序依次编号。有N个人也从1到N依次编号。第一个人(1号)将灯全部关闭。第二个人(2号)将凡是2和2的倍数的灯打开。第三个人(3号)将凡是3和3的倍数的灯做相反的处理(如果该灯为打开的,则将它关闭;如果该灯为关闭的,则将它打开)。以后的人都和3号一样,将凡是与自己编号相同的灯,以及是自己编号倍数的灯做相反处理。请编写程序实现。要求:程序中要显示每一个人所做工作的过程,例如:当第i个人操作时,则显示将i和i的倍数的灯做
2、相反的处理过程;当第N个人操作之后,显示灯的最后状态。(建议:采用图形法,显示每一盏灯,并为每一盏灯加边框,用不同的颜色显示开灯或关灯)。 0表示灯灭,1表示灯亮例如:当输入N为7时; 当第一个人操作时 则输出结果为: 000000当第二个人操作时 则输出结果为:0101010 当第三个人操作时 则输出结果为: 0111000当第七个人操作时 则输出结果为: 0111001 二 解决方案1 流程图2 源代码#include void chush(int *p,int n)int i;for(i=0;in;i+)pi=1;void main()int i,k,n,a1000;printf(0表示
3、灯灭,1表示灯亮);printf(请输入一个数 n :n);scanf(%d,&n);chush(a,n); i=o;doprintf(第%d个人操作时,i+1); k=0;doif(k+1)%(i+1)=0) ak=1-ak;printf(%d,ak);k+;while(kn);printf(n);i+;while(in);三 主要函数描述Chush是用来对数组进行初始化,即让n盏灯都为灭掉的状态。四 主要技术问题必须对指示灯数组进行初始化,灯的亮灭用1,0表示。题中要求i和i的倍数的灯做相反的处理,可以用取余数是否恒等于0来判断是否要取反。五 实验心得在本次编程过程中遇到了一些问题。在循环创建中遇到了数据溢出问题,do while循环没有给他设置自己的开始点,导致了数据溢出,在同学的帮助下,对do while循环有了更加深刻的了解