蓝桥杯-洛谷刷题-day2(C++)

目录

1.小写字母与大写字母的转换

2.使用string(额外开一章持续补充)

i.访问字符串最后一位

3.保留N位小数输出

i.C++侧

ii.C语言侧

iii.总结

4.高精度相加

i.各种数据类型转字符型

ii.三元运算符

iii.循环条件中的carry


1.小写字母与大写字母的转换

大写从65开始,小写从97开始,之间差了32.

输入小写,输出大写:

cpp 复制代码
#include<iostream>
using namespace std;

int main()
{
    char a;
    cin >> a;
    a = a - 32;
    cout << a;
    return 0;
}

2.使用string(额外开一章持续补充)

i.访问字符串最后一位

此处,只写刷题时遇到的

cpp 复制代码
//需要的库
#include <string>
//定义
string s;
//获取长度
int len = s.length();

s.length()获取s 中,有多少字符,是实际长度。

在长度未知的情况下,可通过slen - 1 访问s 的最后一个字符(len取自上文代码的变量)。

值得注意的一个很简单但一忽略的点,当需要键盘输入string时,对string进行操作的函数一定要写在输入之后,

cpp 复制代码
int main()
{
    string s;
    cin >> s;
    //输入之后,再操作
    int len = s.length();
}

3.保留N位小数输出

i.C++侧

需要<iomainip>库,

cpp 复制代码
#include <iomanip>

double t = 9;
cout << t << endl;
cout << fixed << setprecision(3) << t << endl;

输出结果应该是:

9

9.000

其中,cout << fixed,会让之后输出的所有东西都变为浮点型,注意是所有。

之后,cout << setprecision(N),设置输出的浮点型小数点后保留几位,这个的影响也是所有。(precision的意思是精度)

拓:解除fixed 的设置,只需要插入代码,cout << defaultfloat; 即可。

拓:关于整型的多位输出,可以回顾蓝桥杯-洛谷刷题-day1(C++)

ii.C语言侧

cpp 复制代码
double x;
printf("%.3f", x);

iii.总结

C++的更安全,不易报错,C语言的更直接。

4.高精度相加

cpp 复制代码
#include <iostream>  
#include <iomanip>  //操纵器,个位数字,多位输出;保留n位小数输出
#include <cmath>    //向上取整函数ceil
#include <string>

using namespace std;
//大数字计算,运用字符,从末尾开始加,超过10的,只取个位进行拼接,暂存十位进入下一个循环

string Add(string a, string b)
{
    string result;
    //两串的末尾指针
    int i = a.length() - 1;
    int j = b.length() - 1;
    //暂存十位
    int carry = 0;
    //用循环分别逐个取出字符,转换类型,进行加减
    while (i >= 0 || j >= 0 || carry > 0)   //有一个真就会循环,当carry不为零时,说明有多出来的十位,需要再运算
    {
        int digitA = (i >= 0) ? a[i] - '0' : 0;
        int digitB = (j >= 0) ? b[j] - '0' : 0;
        int sum = digitA + digitB + carry;
        //转为字符型,保留个位
        result = to_string(sum % 10) + result;
        //保留十位
        carry = sum / 10;
        i--;
        j--;
    }
    return result;
}

int main()
{
    string a, b;
    cin >> a >> b;
    cout << Add(a, b);
    return 0;
}

C++ 中大数字相加是个很复杂的过程,需要借助字符型来实现,

i.各种数据类型转字符型

to_string() 函数

ii.三元运算符

有效简化代码,当循环中,有两种递减或递增指标,且两个指标的大小不同,会出现一个优先到达极限时,三元运算符,可以持续调整达到极限后的指标带来的负面影响,太妙了。

iii.循环条件中的carry

真正地考虑到多出来的十位的具体处理,对多余项的认真处理。

相关推荐
战族狼魂28 分钟前
每日一课:算法系统学习路线
人工智能·算法·大模型·大语言模型
变量未定义~37 分钟前
连通块中点的数量、堆箱子(4星)
算法
盐焗鹌鹑蛋1 小时前
【C++】set和map
c++
j7~1 小时前
【算法】专题二:滑动窗口之水果成蓝,找到字符串中所有字⺟异位词等算法题
c++·算法·滑动窗口·水果成蓝·最小字串覆盖·优选算法精选
木木子221 小时前
# 星座配对深度解析:Select 长列表选择器、矩阵评分算法与数据驱动建议
java·算法·华为·矩阵·harmonyos
一拳一个呆瓜1 小时前
【STL】iostream 编程:文件输出流的成员函数
c++·stl
大鱼>1 小时前
AI+货物追踪:跨境电商包裹追踪系统
人工智能·深度学习·算法·机器学习
Huangjin007_1 小时前
【C++11篇(四)】新的类功能、lambda 与包装器详解
开发语言·c++
大鱼>1 小时前
AI+货物追踪:全链路货物可视化追踪系统
人工智能·深度学习·算法·机器学习
大江东去浪淘尽千古风流人物1 小时前
【SLAM】slam高动态位姿估计全链路拆解
算法·面试·职场和发展·视觉里程计·slam·vio·大疆