1-算法基础-编程基础

news2025/5/26 11:25:18

1.基本数据类型

char ch = 'A';
char s[] = "hello";

2.const定义常量

const int N = 1e5 + 9;//const定义常量,后续不可被修改
int a[N];

3.万能头文件
C++11等可用

#include<bits/stdc++.h>
using namespace std;

4.typedef

typedef long long kk;
kk a[20];//相当于long long a[20]

等价于

using kk=long long

5.类型及对应标识符

类型标识符
int%d
float%f
double%lf
char%c
char[]%s
long long%lld

6.输入与输出

#include<iostream>
using namespace std;
int main() {
	char c1, c2;
	scanf("%c:%c", &c1, &c2);//从键盘输入a:b
	printf("%c,%c", c1, c2);//输出a,b
	return 0;
}

字符串输入无需&,字符串本身就是地址,由指针表示

#include<iostream>
using namespace std;
int main() {
	char s[10];
	scanf("%s", s);
	printf("%s", s);
	return 0;
}

从s[1]位置开始输入

cin>>s+1;

%s遇到空格或回车就会停下,读取结束后以 \0 结尾
例如:输入hello world,只会读入hello
可以使用如下方式遍历,或者直接cout<<s

int main() {
	char s[50];
	cin >> s;
	for (int i = 0; s[i] != '0'; ++i) {  // s[i] != '0'可简写为s[i]
		cout << 1;
	}
}

可以使用以下方法读入一整行数据(遇到换行停止)

int main() {
	char s[10];
	scanf("%[^\n]", s);
	printf("%s", s);
	return 0;
}

cin遇到空格或回车就会停下,可以使用getline读取一行数据

#include<iostream>
#include<string> //头文件
using namespace std;
int main() {
	string s;
	getline(cin, s);
	cout << s;
}

输出:
在这里插入图片描述

cout fixed的setprecision精度控制,只对浮点型有效

#include<iostream>
#include<iomanip> //精度头文件
using namespace std;
int main() {
	double a = 2;
	cout << fixed << setprecision(3)<<a; //out:2.000
}

scanf和printf的效率高于cin和cout
可以使用取消同步流的方式为cin和cout加速

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步流
	int x;
	cin >> x;
	cout << x;
}

\n比endl快

cout << '\n';//比endl快

7.string
(1)

string str1;//空字符串
string str2 = "hello, world";
string str3 = str2;
string str4 = str2.substr(0, 5);//(起始位置,长度)

在这里插入图片描述
(2)

string str6(5, 'A');//输出结果:AAAAA

//声明了一个指向常量字符数组的指针charArray,并将其初始化为字符串"hello"
const char* charArray = "hello";
//创建了一个名为str5的string实例,并使用charArray的内容进行初始化
string str5(charArray);//输出结果:hello

注:const关键字表示数组的内容不可被修改。

const char* charArray = "hello";
charArray[0] = 'H';  // 错误:试图修改一个const对象
const char* charArray = "hello";
charArray = "world";  // 正确:改变了指针charArray的指向

通过cout<<charArray即可输出charArray指针指向的字符串,它会从指针指向的位置开始,连续输出字符,直到遇到空字符(‘\0’)为止

const char* charArray = "hello";
string str5(charArray);
cout << charArray;//输出结果:hello

(3)使用c_str()将s转换为C风格的字符串得以正常输出

char a[100];
scanf("%s", a);
string s(a);
cout << typeid(a).name()<<endl;//char [100]
cout << typeid(s).name() << endl;//class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
cout << typeid(s.c_str()).name() << endl;//char const * __ptr64

例如

char a[100];
scanf("%s", a);
string s(a);
printf("%s", s);

在这里插入图片描述

char a[100];
scanf("%s", a);
string s(a);
printf("%s", s.c_str());

在这里插入图片描述

(4)基本操作

string s = "a b";
cout << s.length()<<endl;

string s2 = "c";
cout << s+"," + s2 << endl;
cout << s.append(",") + s2 << endl;

在这里插入图片描述
(5)字符串查找

string s = "hello wor";
cout << s.find("wo");//从0起输出查找字符串的起始位置
//输出:6
//若输出-1表示没找到

(6)字符串替代replace,有多个重载形式
①replace(pos, len, str): 从位置 pos 开始的 len 个字符被替换为字符串 str。
pos: 要开始替换的位置。
len: 要被替换的长度。
str: 用来替换的字符串。
②replace(iterator first, iterator last, str): 将迭代器 first 和 last 之间的部分替换为字符串 str。
first, last: 定义要替换部分的起始和结束迭代器。
str: 用来替换的字符串。
③replace(pos, len, str, subpos, sublen): 用 str 中从 subpos 开始的 sublen 个字符来替换原字符串中从位置 pos 开始的 len 个字符。
pos, len: 定义原字符串中要替换的部分。
str: 提供替换内容的字符串。
subpos, sublen: 定义 str 中用于替换的子字符串的起始位置和长度。

(7)字符串比较
逐个字母比较,直到出结果
aa<ab
azzz<ba

string a = "ab";
string b = "ac";

//布尔类型,成立1,不成立0
cout << (a < b);//输出1
//相等0,-1表示a小,1表示b小
cout << a.compare(b);//输出-1

(8)auto

int main() {
	int i;
	string s = "hello";
	for (auto i : s) {//i取遍s中的每个字符(以复制形式)
		cout << i<<endl;
		i = 'a';//使用了auto,这里是无效修改
	}
	cout << s;
}
/*输出
hello
hello
*/
#include<iostream>
#include<string>
using namespace std;
int main() {
	int i;
	string s = "hello";
	for (auto &i : s) {//i取遍s中的每个字符(直接修改s)
		cout << i<<endl;
		i = 'a';//使用了&,这里是有效修改,但在for循环结束后生效
	}
	cout << s;
}
/*输出
hello
aaaaa
*/

练习:反转字符串
在这里插入图片描述
样例输入:
b ar
样例输出
ra b

#include<iostream>
#include<string>
using namespace std;
int main() {
	string s;
	getline(cin, s);
	for (int i = (int)s.length() - 1; i >= 0; i--) { //建议加(int)
		cout << s[i];
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1278943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

反序列化漏洞(二)

目录 pop链前置知识&#xff0c;魔术方法触发规则 pop构造链解释&#xff08;开始烧脑了&#xff09; 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识&#xff0c;魔术方法触…

Eaxyx 让圆球跟随鼠标移动

如果出现2023&#xff0c;代表配置成功: 进入Eaxy官方网站&#xff0c;点击文档&#xff1a; 选择 函数->绘图函数->initgraph: 可以看见initgraph&#xff08;&#xff09;函数有如下三个参数: 现在我们想生成一个1280*720大小的窗口&#xff1a; 我们需写如下代码: 但…

基于算能的国产AI边缘计算盒子8核心A53丨17.6Tops算力

边缘计算盒子 8核心A53丨17.6Tops算力 ● 可提供17.6TOPS&#xff08;INT8&#xff09;的峰值计算能力、2.2TFLOPS&#xff08;FP32&#xff09;的高精度算力&#xff0c;单芯片最高支持32路H.264 & H.265的实时解码能力。 ● 适配Caffe/TensorFlow/MxNet/PyTorch/ ONNX/…

如何解读手机APP入侵与逆向破解

如果您有耐心看完这篇文章&#xff0c;您将懂得如何着手进行app的分析、追踪、注入等实用的破解技术&#xff0c;另外&#xff0c;通过“入侵”&#xff0c;将帮助您理解如何规避常见的安全漏洞&#xff0c;文章大纲&#xff1a; 简单介绍ios二进制文件结构与入侵的原理介绍入…

Python逐步打造惊艳的折线图

大家好&#xff0c;Matplotlib可以快速轻松地使用现成的函数绘制图表&#xff0c;但是微调步骤需要花费更多精力。今天本文将介绍如何使用Matplotlib绘制吸引人的图表&#xff0c;实现折线图的惊艳变身。 1.数据 为了说明方法&#xff0c;本文使用了包含过去50年各国GDP信息的…

二维A*算法

MATLAB2016b可以正常运行 function bidirectional_ASTAR clc; clear; %% 初始化界面 n 11; % field size n x n tiles 20*20的界面 %wallpercent 0.3; % this percent of field is walls 15%的界面作为阻碍物&#xff08;墙&#xff09; cmap [1 1 1; ...% 1 - whit…

C语言易错知识点八(结构体)

结构体 世间万物&#xff0c;上至飞禽&#xff0c;下至走兽&#xff0c;全都知道一件事&#xff1a;三个臭皮匠&#xff0c;顶个诸葛亮。&#xff08;假的&#xff09;即使是处于人类前沿的编程语言也知道要把数据联合在一起&#xff0c;于是便有了数组&#xff0c;结构体&…

Linux线程安全,死锁,生产消费模型,线程池

目录 1.可重入和线程安全 2.死锁 死锁四个必要条件&#xff1a; 避免死锁 3. Linux线程同步 线程同步 生产消费模型的概念理解&#xff08;321原则&#xff09; 生产消费模型都有哪些好处。 串行、并发、并行 条件变量 4.信号量 5.线程池 人的一生为什么要坚持&#xff1…

【Java 基础】15 注解

文章目录 1.什么是注解2.元注解1&#xff09;定义2&#xff09;分类 3.内置注解4.自定义注解5.注解的基本语法6.验证注解是否生效7.注解的使用场景8.注解的注意事项结语 1.什么是注解 注解&#xff08;Annotation&#xff09;可以理解成一种特殊的 “注释” 注解定义时以 符号…

docker部署frp穿透内网

文章目录 &#xff08;1&#xff09;部署frps服务器&#xff08;2&#xff09;部署frpc客户端&#xff08;3&#xff09;重启与访问frp&#xff08;4&#xff09;配置nginx反向代理 &#xff08;1&#xff09;部署frps服务器 docker安装参考文档&#xff1a;docker基本知识 1…

使用java批量生成Xshell session(*.xsh)文件

背景 工作中需要管理多套环境, 有时需要同时登陆多个节点, 且每个环境用户名密码都一样, 因此需要一个方案来解决动态的批量登录问题. XShell Xshell有session管理功能: 提供了包括记住登录主机、用户名、密码及登录时执行命令或脚本(js,py,vbs)的功能 session被存储在xsh文…

openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性

文章目录 openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性138.1 操作步骤 openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性 数据库事务一致性通过逻辑时钟保证&#xff0c;与操作系统时间无关&#xff0c;但是系统时间不一致会导致…

部署springboot项目到GKE(Google Kubernetes Engine)

GKE是 Google Cloud Platform 提供的托管 Kubernetes 服务&#xff0c;允许用户在 Google 的基础设施上部署、管理和扩展容器。本文介绍如何部署一个简单的springboot项目到GKE. 本文使用podman. 如果你用的是docker, 只需要把本文中所有命令中的podman替换成docker即可 非H…

代码随想录算法训练营第三十四天|62.不同路径,63. 不同路径 II

62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#…

Git版本管理配置说明 - Visual Studio

一、 Git服务端配置 在源代码管理服务器新建文件夹,并配置共享访问权限Everyone(读取/写入)。 在本地访问这台服务器共享目录,确保正确打开。 在VS中打开项目,点选Git更改,点击“创建Git仓库”,创建项目初始版本。 弹出如下对话框: 因为我们只是在局域网中开发项…

某60区块链安全之Create2实战一学习记录

区块链安全 文章目录 区块链安全Create2实战一实验目的实验环境实验工具实验原理实验内容Create2实战一 实验步骤分析合约源代码漏洞Create2实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约Create2引发的漏洞及其利用 找到合约漏洞进行分析并形成利用 实…

初识金融市场

文章目录 前言第一章 金融市场体系考点二、金融市场分类考点三、金融市场的功能考点四、直接融资与间接融资的特点考点五、全球金融市场的形成及发展趋势考点六、国际资金的流动方式考点七、金融体系的主要参与者考点八、国际金融监管体系 第二章 中国的金融体系与多层次资本市…

爬虫学习-基础(HTTP原理)

目录 一、URL和URI 二、HTTP和HTTPS &#xff08;1&#xff09;HTTP &#xff08;2&#xff09;HTTPS &#xff08;3&#xff09;HTTP与HTTPS区别 &#xff08;4&#xff09;HTTPS对HTTP的改进&#xff1a;双问的身份认证 三、TCP协议 &#xff08;1&#xff09;TCP三次握手…

Redis——某马点评day02——商铺缓存

什么是缓存 添加Redis缓存 添加商铺缓存 Controller层中 /*** 根据id查询商铺信息* param id 商铺id* return 商铺详情数据*/GetMapping("/{id}")public Result queryShopById(PathVariable("id") Long id) {return shopService.queryById(id);} Service…

XIAO ESP32S3之SenseCraft 模型助手部署

sipeed教程&#xff1a;SenseCraft 模型助手部署 | Seeed Studio Wiki 一、安装ESP-IDF 鉴于我的电脑之前安装过esp-idf v4.3版本&#xff0c;而ESP32-S3需要v4.4及以上版本才支持&#xff0c;所以将esp-idf更新到最新5.1版本。 1、启动mingw32.exe应用 2、进入esp-idf目录 …