c++学习笔记(4)

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;
}

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值