杭电短学期算法与编程

杭电短学期算法与编程

ID:34476190

大小:42.00 KB

页数:10页

时间:2019-03-06

杭电短学期算法与编程_第1页
杭电短学期算法与编程_第2页
杭电短学期算法与编程_第3页
杭电短学期算法与编程_第4页
杭电短学期算法与编程_第5页
资源描述:

《杭电短学期算法与编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1.指示灯控制一.问题描述:N盏灯排成一排,从1到N按顺序依次编号。有N个人也从1到N依次编号。第一个人(1号)将灯全部关闭。第二个人(2号)将凡是2和2的倍数的灯打开。第三个人(3号)将凡是3和3的倍数的灯做相反的处理(如果该灯为打开的,则将它关闭;如果该灯为关闭的,则将它打开)。以后的人都和3号一样,将凡是与自己编号相同的灯,以及是自己编号倍数的灯做相反处理。请编写程序实现。要求:程序中要显示每一个人所做工作的过程,例如:当第i个人操作时,则显示将i和i的倍数的灯做相反的处理过程;当第N个人操作之后,显示灯的最后状态。(建议:采用图形法,显示每一盏灯,并为每一盏灯加边框,用不同的

2、颜色显示开灯或关灯)。二.功能描述:实现对路灯的控制三.解决方案(流程图)先定义一个函数来实现对指示灯的控制,该函数用到了for循环语句,取余(因为跟倍数有关),还有if语句,定义一个指针*light来存放灯亮灭的情况,并为其分配动态内存。最后在主函数中进行函数调用来完成编程。四.主要函数描述colloc动态内存分配函数可分配连续的存储空间free释放动态分配函数存储空间10五.主要技术问题程序代码#include#includeintmain(void){inti,N,*light;voidon_off(intn,intk,intp[]);pr

3、intf("EnterN:");scanf("%d",&N);if((light=(int*)calloc(N,sizeof(int)))==NULL){printf("Notabletoallocatememory.");exit(0);//如果light=0则说明无法分配内存空间,退出}for(i=0;i

4、循环变量for(j=0;j

5、盏灯是黑的五.结论(实验心得)该编程不是很难,用到了指针和数组,for循环和if语句,动态内存分配。编程过程中由于粗心出现了些小问题,不过很容易就检查出来了。时隔一年重新用到C语言来编程不免有些手生,但我相信凭借扎实的编程功底还是可以完成任务的。2.约瑟夫问题一、问题描述10编号为1,2…n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺

6、序。 二.功能描述:游戏淘汰赛,把玩家一个一个淘汰出局。三.解决方案(流程图)为了实现上述程序功能,应以有序循环链表表示集合。为此,需要一个抽抽象数据类型:有序表。有序表的抽象数据类型定义为:ADTLinkList{数据对象:D={ai

7、ai∈ElemSet,i=1,2,3,…,n,n≥0}数据关系:R1={

8、ai-1,ai∈D,ai-1

9、出出列者编号}循环链表中节点的定义如下所示:typedefstructLNode{intnum;  //编号intcode;//密码structLNode*next;}LNode,*LinkList;四.主要技术问题10程序代码#includeusingnamespacestd;typedefstructLNode{intnum;//编号intcode;//密码structLNode*next;}LNode;voidcreate(LNo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。