C++--投篮

文章描述了一个编程问题,要求设计一个程序来自动计算小X在篮球投篮中的得分,根据规则,包括正常进球、碰框得分、三不沾扣分以及连续进球的额外加分。程序利用C++实现,通过遍历输入字符数组判断得分情况。
摘要由CSDN通过智能技术生成

标题:投篮

题目:

小 X 刚把猜先的程序交给少年宫的小朋友就接到了健身教练的电话,教练要求他马上到中天体育馆练习投篮,之所以选择投篮这个项目,主要目的是要在帮助小 X 减肥的同时还能预防颈椎病,小 X 每次必须投满规定的积分才能结束投篮。

积分规则是这样的:小 X 每投中一个球得 1 分,如果没投中但球碰到了篮框、篮板或篮网则既不得分也不扣分,如果球啥也没碰到 ( 俗称三不沾 ) 则倒扣 1 分,作为奖励小 X 如能连续投中 3 球则额外加 1 分,如连续投中 4 球则额外加 2 分,依次类推,即连续投中 K 球 (K>=3) 则额外加 K-2 分,教练每次给小 X 计分都很辛苦,于是他要求小 X 设计一个能自动计分的程序,小 X 觉得这个程序也很简单,于是他把这个任务又交给了你!

输入:

输入数据共有两行,第一行为一个正整数 n ,表示小 X 共进行了 n 次投篮,第二行为一个由 n 个字符组成的字符串,该字符串只包含三种字符,分别是大写字母 ’ V ’ , ’ T ’ , ’ X ’ ,其中 ’ V ’ 表示投中了, ’ T ’ 表示没投中但不用扣分, ’ X ’ 表示要扣 1 分。

输出:

输出一行仅有一个整数为小 X 的得分。


题目分析:

根据题目,我们可以提取出相关信息

1.输入的次数为n(且为正整数)

2.输入的字符因用char,string等类型的单字符

3.判断字符,并处理(详情如下代码分析区)

4.输出

分析时刻:

First:

我们要先用一个字母n来记录字母的个数

此处我使用数组

则设置char arr[n];

用for循环给数组内的每一个值赋值

int n,all=0,temp=0;
cin>>n;
char arr[n];
for(int i=0;i<n;i++) cin>>arr[i];

 接着我们要对数组内的每一个值进行判断

因为每当连续三次及以上进球时(即V>=3)时

都会额外增加一分

so

我们可以设置一个temp变量 

每当进球(V)时 增加1;

如下图

for(int i=0;i<n;i++)
    {
        if(arr[i]=='V')
        {
            all++;
            temp++;
            if(temp>=3) all++;
        }
    }

 而当字母为T,X时分别为 不扣分 和 扣分的情况时 连续中断 则 重新设置temp=0

T,X的分析如下图

for(int i=0;i<n;i++)
    {
        if(arr[i]=='V')
        {
            all++;
            temp++;
            if(temp>=3) all++;
        }
        else if(arr[i]=='T') temp=0;
        else if(arr[i]=='X')
        {
            temp=0;
            all--;
        }
    }

最后输出。

代码呈现 

#include<bits/stdc++.h> //此处也可以使用 <iostream>标准库
using namespace std;
int main()
{
    int n,all=0,temp=0;
    cin>>n;
    char arr[n];
    for(int i=0;i<n;i++) cin>>arr[i];
    for(int i=0;i<n;i++)
    {
        if(arr[i]=='V')
        {
            all++;
            temp++;
            if(temp>=3) all++;
        }
        else if(arr[i]=='T') temp=0;
        else if(arr[i]=='X')
        {
            temp=0;
            all--;
        }
    }
    cout<<all;
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老冰安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值