1、加强要求:1)将1、2 题集成为一个程序,根据用户输入判断奇数还是偶数,执行相应的过程。实验设计内容(1)实验设计的数据结构(1)数组int s1000;(2)层次图(3) 各个函数分析/*翻硬币过程1(偶数)*/int Upturn_process1 (int coins_Number) int i, j; for(i = 0; i coins_Number; i+) printf(Step %d:n,i+1);/翻转步数 getchar(); for(j = 0; j j+) if(j != i) sj = !sj;/将i后面的硬币全部翻转过来%3c, sj?*:0);/sj=1时为正面,
2、打印* ,否则打印0 /*翻硬币过程2(奇数)*/int Upturn_process2 (int coins_Number) int i, j,count; /翻转步数 count=0;= i & j!=i+1)/ 将i+1后面的硬币全部翻转过来 /sj=1时为正面,打印* ,否则打印0 if(sj) count+;/统计正面个数 if(count=coins_Number-2)Stept %d:,i+2);, /当正面个数等于N-2时,进行最后一次翻转 break;(5)流程图 调试过程记录for(i = 0; if(count=coins_Number-2)当N为奇数时,要进行判断,当正
3、面个数等于N-2时,经过最后一次翻转结束。刚开始没有进行判断,所以出错。实验结果记录以及与预期结果比较以及分析总结以及心得体会有些问题看来很复杂,但它们是有一定规律的。只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。指导老师评阅意见指导老师: 年 月 日#include string.hstdlib.hconio.h/*硬币状态标志,1时硬币是正面,0时硬币是反面*/= i)int main() int coins_Number; int j;请输入硬币的个数: scan
4、f(%d,&coins_Number);初始状态: sj = 1; /所有硬币初始状态设置,设置正面向上, nn if (coins_Number%2=0) Upturn_process1 (coins_Number); else Upturn_process2 (coins_Number);题目描述:一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚直至m枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。
5、m为2时,翻3次即可;m为3时,翻9次即可;m为4时,翻11次即可;m为5时,翻24次即可;m为30时,翻899次即可; 输 入:仅有的一个数字是这摞硬币的枚数m,0m1000。输 出:为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。输入样例:30 输出样例:899 程 序:program Programl;var m:integer;function solve (m:integer):vat i,t,d:flag:boolean;beginif (m=1)thenso1ve:= else begind:=2*m+1;t:= 2;i:= 1;flag:=False;repeatif (t=1)thenbeginsolve:= flag:=True;endelse if ( )thenbeginsolve:=i*m-1;flag:endelset:= ;i:=i+1;until flag;endend;beginread (m);if (m0) and (m1000) thenwriteln ( );end.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1