c++(冰雹序列)

《c++程序设计 * 基础、编程抽象与算法策略》

Programming Abatractions in C++

[美] 埃里克 S. 罗伯茨(Eric S. Roberts)著  李雁妮 译


冰雹序列(Hailstone Sequence)

通过对一个特定的整数 n 重复地执行一下规则,便可形成一列系数:

1、如果 n 等于 1 ,那么已经到达这个序列数的终点,可以停止。

2、如果 n 为偶数,将它除以 2 ;

3、如果  n 为奇数,将它乘以 3 再加 1 。

这些值忽上忽下,如冰雹在云中的形成。

冰雹序列最迷人之处是直到目前还没有人证明它最终能停止。冰雹序列的计算过程可以有很多步,但不知何故,它总能跳回到 1 。


代码:

  1 /*
  2  *Hailstone Sequence
  3  *
  4  * */
  5 #include <iostream>
  6 
  7 int hailstone(int x);
  8 
  9 int main()
 10 {
 11         int a;
 12         std::cout<< "Enter a number: ";
 13         std::cin>> a;
 14         hailstone(a);
 15         return 0;
 16 }
 17 
 18 int hailstone(int x)
 19 {
 20         int step = 1;
 21         if( x <= 0)
 22         {
 23                 std::cout<< "The number should be greater than 0." <<std::endl;
 24                 return -1;
 25         }
 26         while( x != 1)
 27         {
 28                 if( x % 2 )
 29                 {
 30                         std::cout<< step << " : " << x << " is odd, then multiply by 3 and add 1 to get ";
 31                         x *= 3;
 32                         x += 1;
 33                         std::cout<< x <<std::endl;
 34                 }
 35                 else
 36                 {
 37                         std::cout<< step << " : " << x << " is even, then divide it by 2 to get ";
 38                         x /= 2;
 39                         std::cout<< x <<std::endl;
 40                 }
 41                 step++;
 42         }
 43         std::cout<< "arraving the end point 1......" <<std::endl;
 44         std::cout<< "*** End ***" <<std::endl;
 45 }

执行:


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目描述:“打冰雹”游戏是指从窗口顶部落下多个圆球表示的“冰雹”,用户使用鼠标来指引箭头表示的“枪”瞄准其中一个圆球,单击鼠标射击。如果打中圆球则加分,没打中减分。若累积有5个圆球一直未被击中而落到地面(用水平黑线表示),则失败。用户玩游戏的目标是尽量短的时间内得尽量多的分数,同时避免圆球落地。 功能要求:(1)设计图1.26(课本)所示的窗口界面。程序启动时,自动进入游戏状态,10个不同颜色的圆球从窗口顶部向下运动。用户使用鼠标指向其中一个圆球,然后单击。如果击中圆球则加1分,未击中则减1分,分数显示在“得分”文本框中。“所用时间”文本框中显示当前已用的时间。被击中的圆球立即消失,新的圆球从顶部落下。 (2)要求同时显示10个圆球,每个圆球的颜色和下落速度各不相同。窗口底部的箭头一直指向鼠标指针的方向。单击鼠标射击时,显示一条从箭头发出到达鼠标指针的直线表示子弹轨迹。 (3)程序共有4个难度等级,分别是“简单”、“中等”、“较难”和“高级”。默认的难受为“中等”。不同的等级对应不同的总体下落速度。在游戏过程中,随时可以通过“选择难度”组合框来改变难度级别。 (4)游戏开始时,提供的“能量”数是5。如果有一个圆球落到地面,则减1。当能量为0时,显示如图1.27所示的消息框。然后,程序自动将难度改为“简单”让用户重新开始,这时能量恢复为5,得分从0开始。 圆球落地后立即消失,新的圆球从顶部落下,窗口上始终保持有10个圆球。 (5)游戏过程中,当得分达到25时,显示如图1.28所示的提示;当得分达到50时,显示如图1.29所示的提示;当得分达到100时,显示如图1.30所示的提示,并自动将难度设为“较难”,当得分达到150时,自动将难度设为“高级”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值