【C++算法快速上手】顺序结构
0. 前言
本系列文章是作者为了快速复习算法知识所作,基于洛谷的官方题单,使用的编程语言为C++,学习方法较为野蛮,如有谬误,欢迎各位在评论区指正。
1. 顺序结构基础
本文内容基于洛谷的顺序结构。
1.1 C++编程格式
假设你是一个曾经掌握过C++,但像作者一样N年没有使用过,那么首先我们需要知道C++编程的格式规范。对于最简单的输出hello world程序,其编程表示为:
# include <iostream> // 头文件,包含常用的函数
# include <bits/stdc++.h> // 万能头文件
using namespace std; // 声明命名空间
int main(){ // 主函数
char a[50];
cin>>a; // 输入
cout<<a<<"Hello,World!"; // 输出
return 0;
}
1.2 格式化输出
所谓的格式化常考察控制输出的位数、长度、填充等,参考博客。
// 头文件
# include <iomanip>
// 控制输出格式
cout << setw(2) << setfill('0') << name;
// setw(n)设置输出宽度为n,仅生效一次,因此对于每个输出都需要设置一次宽度;
// setfill('c')设置填充字符为c,作用范围直至下一次setfill被使用,因此不用每次都进行设置。
// 设置小数位数为n
cout << setprecision(n) << fixed << x; // 其中fixed保证小数末位为0时仍输出。
printf("%.nlf",x);
2. 经典题目
2.1 【深基2.例6】字母转换
题目描述
输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。
样例 #1
样例输入 #1
q
样例输出 #1
Q
题解
这个从ASCII码的思路解题比较简单,需要复习一下ASCII码的知识。对于常用的ASCII码规则包括:
- 数字0对应的ASCII码为30;
- 字符A对应的ASCII码为65,则字符Z对应的ASCII码为90;
- 字符a对应的ASCII码为97。
因此本题由小写字符向大写字符的转换可以直接通过修改ASCII码值的输出得到:
# include <iostream>
using namespace std;
int main(){
char c;
cin>>c;
cout<<char(c-32);// 注意!需要转换成字符类型,不然就输出整型喽!
return 0;
}
对于这道题ASCII码表记不住也没关系。直接计算一下呗!
# include <iostream>
using namespace std;
int main(){
char c;
cin>>c;
int value = 'a' - 'A'; // 计算差值
cout<<char(c-value);
return 0;
}