跳一跳

科技资讯 投稿 24500 0 评论

跳一跳

题目:

计分规则如下:

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

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

{

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

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

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

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

第五步 打印分数即可

第六步 整合代码

 1 #include<stdio.h> 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]==010         {11             break;12         }13     }14     for(i=0 ; step[i]!=0 ; i++15     {16         if(step[i]==117         {18             score += 1;19         }20         if(step[i]==221         {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 }

编程笔记 » 跳一跳

赞同 (29) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽