欢迎来到天天文库
浏览记录
ID:31995108
大小:91.50 KB
页数:10页
时间:2019-01-30
《归纳算法(翻硬币问题).doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、福建工程学院计算机与信息科学系实验报告2010–2011学年第一学期任课老师:实验题目归纳算法设计技术的应用实验时间实验开始日期:2010/11/26报告提交日期:2010/11/26实验目的、要求一、实验题目1、有N个硬币(N为偶数)正面朝上排成一排,每次将N-1个硬币翻过来放在原位置,不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。设计程序让计算机把翻币的最简过程以及翻币次数输出(用*表示正面,O表示反面)2、有N个硬币(N为奇数)正面朝上排成一排,每次将N-2个硬币翻过来放在原位置,不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。设计程序让计算机把翻币的最简过程以及翻币次
2、数输出(用*表示正面,O表示反面)二、实验要求1.该实验的课内学时是4个课时。加强要求:1)将1、2题集成为一个程序,根据用户输入判断奇数还是偶数,执行相应的过程。实验设计内容(1)实验设计的数据结构(1)数组ints[1000];;(2)层次图(3)各个函数分析/***************翻硬币过程1(偶数)******************/intUpturn_process1(intcoins_Number){inti,j;for(i=0;i3、coins_Number;j++){if(j!=i)s[j]=!s[j];//将i后面的硬币全部翻转过来printf("%3c",s[j]?'*':'0');//s[j]=1时为正面,打印*,否则打印0}printf("");}}/***************翻硬币过程2(奇数)******************/intUpturn_process2(intcoins_Number){inti,j,count;for(i=0;i4、oins_Number;j++){if(j!=i&&j!=i+1)s[j]=!s[j];//将i+1后面的硬币全部翻转过来printf("%3c",s[j]?'*':'0');//s[j]=1时为正面,打印*,否则打印0if(s[j])count++;//统计正面个数}printf("");if(count==coins_Number-2){getchar();printf("Stept%d:",i+2);for(j=0;j5、(5)流程图调试过程记录for(i=0;i6、);printf("");break;}}当N为奇数时,要进行判断,当正面个数等于N-2时,经过最后一次翻转结束。刚开始没有进行判断,所以出错。实验结果记录以及与预期结果比较以及分析总结以及心得体会有些问题看来很复杂,但它们是有一定规律的。只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。指导老师评阅意见指导老师:年月日#include#include#include#includeints7、[1000];/*硬币状态标志,1时硬币是正面,0时硬币是反面*//***************翻硬币过程1(偶数)******************/intUpturn_process1(intcoins_Number){inti,j;for(i=0;i
3、coins_Number;j++){if(j!=i)s[j]=!s[j];//将i后面的硬币全部翻转过来printf("%3c",s[j]?'*':'0');//s[j]=1时为正面,打印*,否则打印0}printf("");}}/***************翻硬币过程2(奇数)******************/intUpturn_process2(intcoins_Number){inti,j,count;for(i=0;i4、oins_Number;j++){if(j!=i&&j!=i+1)s[j]=!s[j];//将i+1后面的硬币全部翻转过来printf("%3c",s[j]?'*':'0');//s[j]=1时为正面,打印*,否则打印0if(s[j])count++;//统计正面个数}printf("");if(count==coins_Number-2){getchar();printf("Stept%d:",i+2);for(j=0;j5、(5)流程图调试过程记录for(i=0;i6、);printf("");break;}}当N为奇数时,要进行判断,当正面个数等于N-2时,经过最后一次翻转结束。刚开始没有进行判断,所以出错。实验结果记录以及与预期结果比较以及分析总结以及心得体会有些问题看来很复杂,但它们是有一定规律的。只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。指导老师评阅意见指导老师:年月日#include#include#include#includeints7、[1000];/*硬币状态标志,1时硬币是正面,0时硬币是反面*//***************翻硬币过程1(偶数)******************/intUpturn_process1(intcoins_Number){inti,j;for(i=0;i
4、oins_Number;j++){if(j!=i&&j!=i+1)s[j]=!s[j];//将i+1后面的硬币全部翻转过来printf("%3c",s[j]?'*':'0');//s[j]=1时为正面,打印*,否则打印0if(s[j])count++;//统计正面个数}printf("");if(count==coins_Number-2){getchar();printf("Stept%d:",i+2);for(j=0;j5、(5)流程图调试过程记录for(i=0;i6、);printf("");break;}}当N为奇数时,要进行判断,当正面个数等于N-2时,经过最后一次翻转结束。刚开始没有进行判断,所以出错。实验结果记录以及与预期结果比较以及分析总结以及心得体会有些问题看来很复杂,但它们是有一定规律的。只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。指导老师评阅意见指导老师:年月日#include#include#include#includeints7、[1000];/*硬币状态标志,1时硬币是正面,0时硬币是反面*//***************翻硬币过程1(偶数)******************/intUpturn_process1(intcoins_Number){inti,j;for(i=0;i
5、(5)流程图调试过程记录for(i=0;i6、);printf("");break;}}当N为奇数时,要进行判断,当正面个数等于N-2时,经过最后一次翻转结束。刚开始没有进行判断,所以出错。实验结果记录以及与预期结果比较以及分析总结以及心得体会有些问题看来很复杂,但它们是有一定规律的。只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。指导老师评阅意见指导老师:年月日#include#include#include#includeints7、[1000];/*硬币状态标志,1时硬币是正面,0时硬币是反面*//***************翻硬币过程1(偶数)******************/intUpturn_process1(intcoins_Number){inti,j;for(i=0;i
6、);printf("");break;}}当N为奇数时,要进行判断,当正面个数等于N-2时,经过最后一次翻转结束。刚开始没有进行判断,所以出错。实验结果记录以及与预期结果比较以及分析总结以及心得体会有些问题看来很复杂,但它们是有一定规律的。只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。指导老师评阅意见指导老师:年月日#include#include#include#includeints
7、[1000];/*硬币状态标志,1时硬币是正面,0时硬币是反面*//***************翻硬币过程1(偶数)******************/intUpturn_process1(intcoins_Number){inti,j;for(i=0;i
此文档下载收益归作者所有