归纳算法翻硬币问题Word下载.docx

上传人:b****4 文档编号:18446256 上传时间:2022-12-16 格式:DOCX 页数:9 大小:54.83KB
下载 相关 举报
归纳算法翻硬币问题Word下载.docx_第1页
第1页 / 共9页
归纳算法翻硬币问题Word下载.docx_第2页
第2页 / 共9页
归纳算法翻硬币问题Word下载.docx_第3页
第3页 / 共9页
归纳算法翻硬币问题Word下载.docx_第4页
第4页 / 共9页
归纳算法翻硬币问题Word下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

归纳算法翻硬币问题Word下载.docx

《归纳算法翻硬币问题Word下载.docx》由会员分享,可在线阅读,更多相关《归纳算法翻硬币问题Word下载.docx(9页珍藏版)》请在冰豆网上搜索。

归纳算法翻硬币问题Word下载.docx

加强要求:

1)将1、2题集成为一个程序,根据用户输入判断奇数还是偶数,执行相应的过程。

实验设计内容

(1)实验设计的数据结构

(1)数组

ints[1000];

;

(2)层次图

(3)各个函数分析

/***************翻硬币过程1(偶数)******************/

intUpturn_process1(intcoins_Number)

{

inti,j;

for(i=0;

i<

coins_Number;

i++)

{

printf("

Step%d:

\n"

i+1);

//翻转步数

getchar();

for(j=0;

j<

j++)

if(j!

=i)

s[j]=!

s[j];

//将i后面的硬币全部翻转过来

%3c"

s[j]?

'

*'

:

0'

);

//s[j]=1时为正面,打印*,否则打印0

}

}

/***************翻硬币过程2(奇数)******************/

intUpturn_process2(intcoins_Number)

inti,j,count;

//翻转步数

count=0;

=i&

&

j!

=i+1)

//将i+1后面的硬币全部翻转过来

'

//s[j]=1时为正面,打印*,否则打印0

if(s[j])count++;

//统计正面个数

if(count==coins_Number-2)

Stept%d:

i+2);

'

//当正面个数等于N-2时,进行最后一次翻转

break;

(5)流程图

调试过程记录

for(i=0;

if(count==coins_Number-2)

当N为奇数时,要进行判断,当正面个数等于N-2时,经过最后一次翻转结束。

刚开始没有进行判断,所以出错。

实验结果记录以及与预期结果比较以及分析

总结以及心得体会

有些问题看来很复杂,但它们是有一定规律的。

只要深入细致地进行分析,找到这些规律,然后按规律编制相应的程序,问题就迎刃而解了。

刚开始接触题目的时候,不知道是什么意思,后来通过直接翻转硬币找到了规律,最终也解决了问题。

指导老师评阅意见

指导老师:

年月日

#include<

stdio.h>

string.h>

stdlib.h>

conio.h>

/*硬币状态标志,1时硬币是正面,0时硬币是反面*/

=i)

intmain()

intcoins_Number;

intj;

请输入硬币的个数:

scanf("

%d"

&

coins_Number);

初始状态:

s[j]=1;

//所有硬币初始状态设置,设置正面向上

'

\n\n"

if(coins_Number%2==0)

Upturn_process1(coins_Number);

else

Upturn_process2(coins_Number);

题目描述:

  一摞硬币共有m枚,每一枚都是正面朝上。

取下最上面的一枚硬币,将它翻面后放回原处。

然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。

再取3枚,取4枚……直至m枚。

然后再从这摞硬币最上面的一枚开始,重复刚才的做法。

这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。

例如,m为1时,翻两次即可。

m为2时,翻3次即可;

m为3时,翻9次即可;

m为4时,翻11次即可;

m为5时,翻24次即可;

…;

m为30时,翻899次即可;

输入:

  仅有的一个数字是这摞硬币的枚数m,0<

m<

1000。

  输出:

  为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。

  输入样例:

      30

  输出样例:

      899

  程序:

    programPrograml;

    varm:

integer;

     functionsolve(m:

integer):

     vati,t,d:

       flag:

boolean;

     begin

      if(m=1)then

       so1ve:

=①

      elsebegin

         d:

=2*m+1;

         t:

=2;

         i:

=1;

         flag:

=False;

         repeat

          if(t=1)then

           begin

            solve:

=②

            flag:

=True;

           end

          elseif(③)then

              begin

               solve:

=i*m-1;

               flag:

              end

             else

              t:

=④;

          i:

=i+1;

         untilflag;

        end

      end;

    begin

     read(m);

     if((m>0)and(m<1000))then

      writeln(⑤);

    end.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1