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

相关推荐

  1. C++基础-编程练习题1

    2023-12-07 14:32:03       9 阅读
  2. 1.3编程基础算术表达式与顺序执行

    2023-12-07 14:32:03       33 阅读
  3. 编程基础-算法研究-算法

    2023-12-07 14:32:03       6 阅读
  4. 【从浅到深的算法技巧】1.基础编程模型

    2023-12-07 14:32:03       32 阅读
  5. [力扣]编程基础 0 到 1

    2023-12-07 14:32:03       26 阅读
  6. OpenCV入门1:Python基础编程

    2023-12-07 14:32:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 14:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 14:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 14:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 14:32:03       18 阅读

热门阅读

  1. 【入门】能否构成直角三角形

    2023-12-07 14:32:03       44 阅读
  2. Flutter自定义TextInputFormatter实现金额输入框

    2023-12-07 14:32:03       36 阅读
  3. Hadoop学习笔记(HDP)-Part.04 基础环境配置

    2023-12-07 14:32:03       35 阅读
  4. 创建用户 admin 并授予 sudo管理员权限的方法

    2023-12-07 14:32:03       39 阅读