1.三目运算符(也称为条件运算符)是一种简洁的表示条件逻辑的方法。它的语法如下:
条件表达式 ? 表达式1 : 表达式2
如果条件表达式为真(非零),则返回表达式1的值,否则返回表达式2的值。这种运算符常用于简化简单的if-else语句。
例:
int num = 5;
string result = (num % 2 == 1) ? "奇数" : "偶数";
cout << result << endl; // 输出:奇数
2.通过迭代器输出最大值最小值
3.递归
//斐波那契数列----递归
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 9;
const ll p = 1e9 + 7;
ll dp[N];
//定义了一个全局的dp数组,用于存储已经计算过的斐波那契数。
//然后,在计算斐波那契数时,首先检查dp数组中是否已经有了结果,
//如果有,就直接返回,否则,就进行计算,并将结果存入dp数组中。
//这样可以避免重复计算,提高效率。
ll fib(int n)
{
if(dp[n]) return dp[n];
if(n <= 2)return 1;
return dp[n] = (fib(n - 1) + fib(n - 2)) % p;
}
int main()
{
ios:: sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n; cin >> n;
cout << fib(n) << "\n";
return 0;
}
一个例题--数的计算
样例【输入:6 ,输出:6】
#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int a[N];
int fib(int dep)//dep深度
{
int res = 1;
for(int i = 1;i <= a[dep - 1] / 2; ++ i)
{
a[dep] = i;
res += fib(dep + 1);
}
return res;
}
int main()
{
int n ; cin >> n ;
a[1] = n;
cout << fib(2) << "\n";
return 0;
}
4.C++中的string是一个类,用于表示和处理字符串。它提供了许多方便的成员函数和方法,使得字符串操作变得更加简单。
以下是一些常用的string用法:
- 声明和初始化字符串
#include <iostream>
#include <string>
int main() {
std::string str1; // 声明一个空字符串
std::string str2("Hello, World!"); // 声明并初始化一个字符串
std::string str3 = "Hello, C++!"; // 声明并初始化一个字符串
std::string str4; cin >> str4; // 声明一个空字符串并输入
return 0;
}
- 获取字符串长度:
std::string str = "Hello, World!";
std::cout << "Length of the string: " << str.length() << std::endl
-
替换子字符串:
std::string str = "Hello, World!";
str.replace(7, 5, "C++"); // 将索引7开始的5个字符替换为 "C++"
std::cout << str << std::endl; // 输出 "Hello, C++!"
5.简单的进制转换
以“2021ABCD”转化为10进制为例
//进制转换--法一
int x = 0x2021ABCD;
cout << x << "\n";
//进制转换--法二
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 50;
int a[N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
string s = "2021ABCD";
for(int i = 0;i < s.length(); ++ i)
{
//如果字符是数字('0'到'9'),则将其转换为对应的数字('0'对应0,'1'对应1,依此类推)
if('0' <= s[i] && s[i] <= '9')a[i + 1] = s[i] - '0';
//如果字符是字母('A'到'F'),则将其转换为对应的数字('A'对应10,'B'对应11,依此类推)
//这些转换后的数字被存储在数组a中
else a[i + 1] = s[i] - 'A' + 10;
}
ll x = 0;
//将数组a中的每个元素乘以16的相应次方(i-1次方,i从1开始),然后累加到x上
for(int i = 1;i <= s.length(); ++ i)
{
x = x * 16 + a[i];
}
cout << x << "\n";
return 0;
}