189 8069 5689

跳一跳

题目:

跳一跳是一款微信小游戏,游戏规则非常简单,只需玩家要从一个方块跳到下一个方块,如果未能成功跳到下一个方块则游戏结束。

为茫崖等地区用户提供了全套网页设计制作服务,及茫崖网站建设行业解决方案。主营业务为成都做网站、网站建设、外贸营销网站建设、茫崖网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

计分规则如下:

1. 如果成功跳到下一个方块上,但未跳到方块中心,加1分

2. 如果成功跳到下一个方块上,且刚好跳到方块中心,则第一次加2分,此后连续跳到中心时每次递增2分。也就是说,第一次跳到方块中心加2分,连续第二次跳到方块中心加4分,连续第三次跳到方块中心加6分,…,以此类推。

3. 如果未能成功跳到方块上,加0分,且游戏结束

现在给出玩家一局游戏的每次跳跃情况,请计算玩家最终得分。

输入说明

输入为若干个非零整数(整数个数小于1000),表示玩家每次的跳跃情况。整数之间用空格分隔,整数取值为0,1,2。0 表示未能成功跳到下一个方块上,1 表示成功跳到下一个方块上但未跳到方块中心,2 表示成功跳到下一个方块上,且刚好跳到方块中心。输入的数据只有最后一个整数是0,其均非零。

输出说明
输出一个整数表示该玩家的最终得分。

输入样例
1 1 2 1 2 2 2 0

输出样例
17

题目分析:

经过读题,我们可以总结出如下要点:

1.“输入若干个整数”中这个“若干”怎么刻画——解决办法是定义数组以后,用0作为循环终止的条件;

2.积分规则2中说连续跳到中心时,所加的分数会等差递增——这是本题的核心难点,我们利用循环来解决。

分部码字:

第一步 定义数组,让用户可以从键盘输入

  

int step[1000],i;
int score=0;
for(i=0 ; i<1000 ; i++)
{
  scanf("%d",&step[i]);
  if(step[i]==0)    //当用户输入0时,进入该判断分支,break跳出循环,输入完毕
  {  
    break;
  }
}

第二步 从数组的第一个数字开始,只要没有取到0,说明跳一跳所走的这一步一定会给总分加分,首先外层写好循环

for(i=0 ; step[i]!=0 ; i++)

{

}

第三步 第一个分支:若该数组变量为1,说明符合积分规则1,总分加1分

if(step[i]==1)
{
  score += 1;
}

第四步 第二个分支:若该数组变量为2,说明符合积分规则2

这里很特殊。规则规定:连续第一次跳在中心(用户输入2)得2分,第二次得4分,以此类推。转变说法,即:当前step之前用户输入了‘多少’个连续的‘2’,就加(‘多少’+1)*2的分数。现在,我们要将这个‘多少‘计数出来,即引入count,利用循环,得到该step前有多少个2。

if(step[i]==2)
{
  int count=0,j;
  for(j=i;step[j]==2;j--)    //从该step向之前计数,遇到1时停止计数
  {
    count++;
  }
  score += 2 * count;

}

第五步 打印分数即可

第六步 整合代码

 1 #include
 2 int main()
 3 {
 4     int step[1000],i;
 5     int score=0;
 6     for(i=0 ; i<1000 ; i++)
 7     {
 8         scanf("%d",&step[i]);
 9         if(step[i]==0)
10         {
11             break;
12         }
13     }
14     for(i=0 ; step[i]!=0 ; i++)
15     {
16         if(step[i]==1)
17         {
18             score += 1;
19         }
20         if(step[i]==2)
21         {
22             int count=0,j;
23             for(j=i;step[j]==2;j--)
24             {
25                 count++;
26             }
27             score += 2 * count;
28         }
29     }
30     printf("%d",score);
31     return 0;
32 }

网页名称:跳一跳
本文路径:http://jkwzsj.com/article/dsopcii.html

其他资讯