当前位置: 首页 > news >正文

1-算法基础-编程基础

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:bprintf("%c,%c", c1, c2);//输出a,breturn 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];}
}

相关文章:

1-算法基础-编程基础

1.基本数据类型 char ch A; char s[] "hello";2.const定义常量 const int N 1e5 9;//const定义常量&#xff0c;后续不可被修改 int a[N];3.万能头文件 C11等可用 #include<bits/stdc.h> using namespace std;4.typedef typedef long long kk; kk a[20…...

HarmonyOS应用开发——程序框架UIAbility、启动模式与路由跳转

前言 UIAbility简单来说就是一种包含用户界面的应用组件&#xff0c;用于和用户进行交互。每一个UIAbility实例&#xff0c;对应于一个最近任务列表中的任务。 一个应用可以有一个UIAbility&#xff0c;也可以有多个UIAbility。一个UIAbility可以对应于多个页面&#xff0c;建议…...

node.js-连接SQLserver数据库

1.在自己的项目JS文件夹中建文件&#xff1a;config.js、mssql.js和server.js以及api文件夹下的user.js 2.在config.js中封装数据库信息 let app {user: sa, //这里写你的数据库的用户名password: ,//这里写数据库的密码server: localhost,database: medicineSystem, // 数据…...

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像预处理方法

目录 前言 知识储备 Opencv图像操作 几个高频面试题目 为什么需要图像算法? 算法原理...

Android drawable layer-list右上角红点,xml布局实现,Kotlin

Android drawable layer-list右上角红点&#xff0c;xml布局实现&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><itemandroid:id"id…...

网络虚拟化场景下网络包的发送过程

网络虚拟化有和存储虚拟化类似的地方&#xff0c;例如&#xff0c;它们都是基于 virtio 的&#xff0c;因而在看网络虚拟化的过程中&#xff0c;会看到和存储虚拟化很像的数据结构和原理。但是&#xff0c;网络虚拟化也有自己的特殊性。例如&#xff0c;存储虚拟化是将宿主机上…...

《数据结构与测绘程序设计》试题详细解析(仅供参考)

一. 选择题&#xff08;每空2分&#xff0c;本题共30分&#xff09; &#xff08;1&#xff09;在一个单链表中&#xff0c;已知q所指结点是p所指结点的前驱结点&#xff0c;若在q和p之间插入结点s&#xff0c;则执行( B )。 A. s->nextp->next; p->nexts; B. q…...

Raft 算法

Raft 算法 1 背景 当今的数据中心和应用程序在高度动态的环境中运行&#xff0c;为了应对高度动态的环境&#xff0c;它们通过额外的服务器进行横向扩展&#xff0c;并且根据需求进行扩展和收缩。同时&#xff0c;服务器和网络故障也很常见。 因此&#xff0c;系统必须在正常…...

Redis队列stream,Redis多线程详解

Redis 目前最新版本为 Redis-6.2.6 &#xff0c;会以 CentOS7 下 Redis-6.2.4 版本进行讲解。 下载地址&#xff1a; https://redis.io/download 安装运行 Redis 很简单&#xff0c;在 Linux 下执行上面的 4 条命令即可 &#xff0c;同时前面的 课程已经有完整的视…...

ThinkPHP的方法接收json数据问题

第一次接触到前后端分离开发&#xff0c;需要在后端接收前端ajax提交的json数据&#xff0c;开发基于ThinkPHP3.2.3框架。于是一开始习惯性的直接用I()方法接收到前端发送的json数据&#xff0c;然后用json_decode()解析发现结果为空&#xff01;但是打印出还未解析的值却打印得…...

简单理解算法

简单理解算法 前言算法衡量一个好的算法具备的标准算法的应用场景 数据结构数据结构的组成方式 前言 hello&#xff0c;宝宝们~来分享我从一本书中理解的算法。《漫画算法》感觉对我这种算法小白比较友好。看完感觉对算法有了新的理解&#xff0c;计算机学习这么多年&#xff…...

C/C++ 内存管理(2)

文章目录 new 和 delet 概念new 和 delet 的使用new与 delete 底层原理malloc/free和new/delete的区别new / opera new / 构造函数 之间的关系定位new表达式(placement-new)内存泄漏内存泄漏分类如何对待内存泄漏 new 和 delet 概念 new和delete是用于动态内存管理的运算符&am…...

Net6.0或Net7.0项目升级到Net8.0 并 消除.Net8中SqlSugar的警告

本文基于NetCore3.1或Net6.0项目升级到Net7.0&#xff0c;参考连接&#xff1a;NetCore3.1或Net6.0项目升级到Net7.0-CSDN博客 所有项目按照此步骤操作一遍&#xff0c;完成后再将所有引用的包&#xff08;即 *.dll&#xff09;更新升级到最新版&#xff08;注意&#xff1a;有…...

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;541. 反转字符串 II 解题思想&#xff1a;进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…...

Effective C++(二):对象的初始化

文章目录 一、类的初始化二、全局静态对象的初始化 一、类的初始化 对于类中的成员变量的初始化&#xff0c;一般有两种方法&#xff0c;一种是在类中定义的时候直接赋予初值&#xff1a; class CTextBlock { private:std::size_t textLength{ 0 };bool lenisValid{ false }:…...

云原生高级--shell自动化脚本备份

shell自动化脚本实战---备份 数据库备份&#xff1a; 结合计划任务 MySQL、 Oracle 网站备份&#xff1a; tar&#xff0c;异地保存--ftp、rsync 一、数据库备份 1.利用自带工具mysqldump 实现数据库分库备份 分库备份&#xff1a; 1> 如何获取备份的…...

Spring Boot实现热部署

Spring Boot提供了一个名为spring-boot-devtools的开发工具&#xff0c;它可以实现热部署功能。通过使用spring-boot-devtools&#xff0c;可以在修改了resources目录下的内容后&#xff0c;自动重新加载应用程序&#xff0c;而无需手动重启。 以下是使用spring-boot-devtools…...

MVCC-

文章目录 1. 什么是MVCC2. 快照读和当前读3. 复习4. MVCC实现原理之ReadView5. 总结 文章目录 1. 什么是MVCC2. 快照读和当前读3. 复习4. MVCC实现原理之ReadView5. 总结 1. 什么是MVCC 口述&#xff1a;MVCC其实他是解决这种读-写的情况的&#xff0c;当然读-写也可以用 锁来…...

键盘打字盲打练习系列之刻意练习——1

一.欢迎来到我的酒馆 盲打&#xff0c;刻意练习! 目录 一.欢迎来到我的酒馆二.选择一款工具三.刻意练习第一步&#xff1a;基准键位练习第二步&#xff1a;字母键位练习第三步&#xff1a;数字符号键位练习 四.矫正坐姿 二.选择一款工具 工欲善其事必先利其器。在开始之前&…...

某公司前端笔试题(12.30)

1、对象数组去重&#xff1a; 数组去重&#xff1a; const a[{a:1,b:2},{a:2},{a:2},{a:1,c:3},{b:2,a:1}] 结果&#xff1a;[{a:1,b:2},{a:2},{a:1,c:3}] // 判断两个对象的属性值是否一致 const a [{ a: 1, b: 2 }, { a: 2 }, { a: 2 }, { a: 1, c: 3 }, { b: 2, a: 1 }] co…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...