C++基础知识

C++代码格式和语法基础

#include<bis/stdc++.h>
万能头文件,包含所有c++中所有标准库的头文件,竞赛常用,可以提高便捷性


ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
通常是用于禁用 C++ 的标准输入输出同步,以提高输入输出的速度。

i    的两种写法

for(int i=1;i<=n;i++)         for(int i=0;i<n;i++)

'\n' 转义字符比endl; 要快好多,推荐用'\n'

c语言的输入输出

scanf("%d %d",&a,&b);

scanf函数用于从标准输入(通常是键盘)读取输入。在这里,"%d %d"是格式控制字符串,指定了要读取两个整数。&a&b是变量地址,表示将读取的整数存储到变量ab中。

"%d %d"中的空格表示在输入中两个整数之间可以有任意数量的空格(包括零个)。

printf("%d,%d\n",a,b);

  • printf函数用于将输出格式化并打印到标准输出(通常是屏幕)。"%d, %d\n"是格式控制字符串,指定了要打印两个整数,中间用逗号分隔,并在末尾输出一个换行符。
  • %d是格式占位符,表示要输出一个整数。ab是要输出的整数值。

  • scanf("%lf", &a[i]); 是C语言中用于从标准输入读取一个双精度浮点数(double)并将其存储在数组 a 的第 i 个位置的语句

蓝桥第一题

在蓝桥镇,妮妮发明了一个新的游戏——翻转游戏。游戏中有一个开关,可以处于两种状态:开(用 1 表示)和关(用 0 表示)。妮妮发现,无论开关当前处于何种状态,他都可以通过一次操作使得开关的状态翻转。现在,妮妮告诉你开关当前的状态 xx,他想知道如果他做一次操作,开关的状态会变成什么。你能帮助他解答这个问题吗?

输入格式
输入仅一行,包含一个整数 x(0<=x<=1),表示开关当前的状态。

输出格式
输出一行,表示如果妮妮做一次操作后,开关的状态。

样例输入
0
样例输出
1
在这个样例中,开关当前的状态是关(0),所以妮妮做一次操作后,开关的状态会变为开(1)。

题解c++
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int x;
	cin>>x;
	int result=1-x;
	cout<<result<<'\n';
	return 0;
}

string 简介

string封装了字符串的储存和管理,自动处理字符串的内存分配和释放,避免手工处理。

可以动态调整字符串的大小

支持迭代器,可以遍历字符串中的字符,进行字符级别的操作。

读入一行字符串的方式

getline(cin,s)

易错用法阐释

string str1="hello world";


string str2= str1.substr(0,5);

左闭右开,由于索引从0开始,所以对应 0,1,2,3,4.——hello

代码分析:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str = "hello world";
    size_t pos = str.find("world");

    if (pos != string::npos) {
        cout << "substring found at position " << pos << endl;
    } else {
        cout << "substring not found" << endl;
    }

    return 0;
}

size_t pos = str.find("world");:使用 find 函数在字符串 str 中查找子字符串 "world",并将结果存储在 pos 变量中。如果找到了子字符串,则 pos 的值为子字符串在原始字符串中的起始位置;如果未找到,则 pos 的值为 string::npos

if (pos != string::npos) {:条件判断,检查 pos 是否不等于 string::npos,即判断是否找到了子字符串。

整体来说,这段代码演示了如何在字符串中查找子字符串,以及如何根据查找结果输出相应的信息。

代码分析2:

#include<iostream>

#include<string>

using namespace std;

int main()

{ string s="hello";

for(int i=0;i<s.length();++i)

cout<<s[i]<<endl;

return 0; }

for(int i = 0; i < s.length(); ++i):使用 for 循环,初始化变量 i 为 0,循环条件是 i 小于字符串长度 s.length(),每次循环结束后 i 自增。

cout << s[i] << endl;:在循环体内,使用 cout 输出字符串 s 中索引为 i 的字符,并在每次输出后换行。

整体来说,这段代码遍历了字符串 "hello" 中的每个字符,并将其逐个输出到标准输出流,每个字符占一行。结果会是:

h
e
l
l
o

string str ="hello world";
str.replace(7,5,"universe")//替代子字符串

7为字串起始位置,5是长度 和substr用法相似

字典序的比较方法

是从小到大一个一个比较,一旦遇到不相等的字符就确定关系。

常见的string遍历的方法有两种:

1.循环枚举下标

2.auto枚举

for (auto &i : s)

{ i = 'a';

cout << i << "\n"; }

其中&表示取引用类型,如果对i修改将会改变原来的值。

反转字符串中的字符

蓝桥杯一题

题目描述

实现一个算法来实现反转字符数组的功能。反转的要求如下:

  1. 将字符数组的字符进行反转,例如 ['b', ' ', 'a', 'r'] 变成 ['r', 'a', ' ', 'b']。

  2. 将字符数组替换为反转后的数组。

输入描述

读入一行字符串,长度不超过 100,字符串可能含有空格。

输出描述

输出一行字符串,该字符串为读入字符串的反转字符串

#include <iostream>
#include <string>
#include <algorithm>  // 添加这行头文件
using namespace std;

int main() {
    string s = "kellp";
    getline(cin, s);
    reverse(s.begin(), s.end());
    cout << s << endl;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值