牛客网编程初学者入门训练3

BC20 kiki算数

描述

问题:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:

  1. 只保留该数的最后两位,例如:对KiKi来说1234等价于34;
  2. 如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保留个位。

例如:45+80 = 25

要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。

数据范围:0 <= a,b <= 231 - 1

输入描述:

一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= 2 31 -1)。

输出描述:

针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。

示例1:

输入:

45 80

输出:

25

内心想法:

题目看上去挺长的,但实则比较简单,但比较想吐槽的是描述规则有一点点误导,其实完全可以把规则 1 去掉,只保留规则 2 ,要不然可能第一想法是去用一些嵌套if语句来描述这两个规则,其实规则 2 就包含了所以情况嘛。所以我们思路就是保留结果的后两位,代码实现如下:

#include<iostream>
using namespace std;
int main()
{
	int a,b;
	cin >> a >> b;
	int sum = a + b;
	cout<<sum % 100 / 10 * 10 + sum % 10<<endl;
}

第 8 行cout语句中加号左边是十位数字,右边是个位数字,没什么好说的。要是误入嵌套if语句,怎么都要几十行吧······

BC21 浮点数的个位数字

描述

给定一个浮点数,要求得到该浮点数的个位数。

数据范围: 0 < n < = 200 0 < n <= 200 0<n<=200

输入描述:

一行,包括一个浮点数。

输出描述:

一行,包含一个整数,为输入浮点数对应的个位数。

示例1:

输入:

13.141

输出:

3

内心想法:

第一想法是让浮点数变成整型就好办了,于是合理猜测一波,转换方法类似于字符型和对应ASCII码的转换方法,代码实现如下:

#include<iostream>
using  namespace std;
int main()
{
    double a;
    cin>>a;
    cout<<(int)a % 10<<endl;
}

合理就是合理。

BC22 你能活多少秒

描述

问题:一年约有 3.156×107s,要求输入您的年龄,显示该年龄合多少秒。

数据范围: 0 < a g e < = 200 0 < age <= 200 0<age<=200

输入描述:

一行,包括一个整数age。

输出描述:

一行,包含一个整数,输出年龄对应的秒数。

示例1:

输入:

20

输出:

631200000

内心想法:

第一想法当然是把年数乘以秒数最简单,但看到数字这么大应该有点意识,int已经不够用了,所以要换成long int。代码实现如下:

#include<iostream>
using namespace std;
int main()
{
    int age;
    cin>>age;
    long second = age * 31560000;
    cout<<second<<endl;
}

BC28 大小写转换

描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写字母。

输出描述:

针对每组输入输出对应的小写字母。

示例1:

输入:

A
B

输出:

a
b

备注:

多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。

内心想法:

很明显思路就是ASCII码加32就可以转换成小写字母,问题是getchar()函数没用过,又是学新东西了······当然就这道题而言,逃避掉也是可以的,比如下面这种解法:

#include<iostream>
using namespace std;
int main()
{
    char c;
    while (cin >> c)
    {
        cout << char(c + 32) << endl;
    }
}

如果要用getchar()的话,就是下面这种解法了:

#include <stdio.h>
int main()
{
    char ch;
    while((ch=getchar())!=EOF)
    {
        if(ch>='A'&&ch<='Z')
        {
            ch+=32;
        }
        putchar(ch);
    }
}

if语句在这里没有应该也不会影响通过,毕竟这种题测试数据都比较水······

不过关于getchar()函数,这两篇博客说的很清楚,受益匪浅:

c、c++的getchar()函数

C++中getchar()的使用方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lum0s!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值