C++bfcmath
2020-12-01 14:46:41 0 举报
AI智能生成
C++初学者必备
作者其他创作
大纲/内容
计算机理论知识
1.计算机发展及应用
2.计算机硬件
3.软件与操作系统
4.进制与编码
5.信息安全
6.计算机网络
程序设计入门
- C++及信息学奥赛介绍
常用符号输入练习
认识键盘和键盘按键
C++程序开发结构
1.包含头文件
#include <头文件名>
2.命名空间
using namespace std;
std-standard(标准)
3.主函数入口:int main(){}
return 0;
写在主函数最后
4.每行代码最后要加”;“
编程习惯
缩进/{}/空格
输入输出流
cout <<
" " / ' '
练习:输出数学运算结果 / 算式
endl
cin >>
一行输入多个数据,用空格隔开
cin >> a >> b >> c......;
">>"和"<<"表示数据的流向
变量
命名规则
定义时需要确定变量类型
各类型变量存储空间
整数:int
4个字节
实数:
float(低精度):一般不用
double(高精度)
8个字节
long long
8个字节
char
1个字节
string
根据长度决定
bool
1个字节
sizeof(参数)
返回参数占用的空间
数据类型转换
强转
(要转换的类型) 变量名
隐式类型转换
赋值时:
大空间数值赋值到小空间,取小空间
如:
double a = 5.5;
int b = a;
如:
char a = 'A';
int b = a;
运算时:
大空间与小空间运算,取大空间
优先级:double > long long > int
比int小的类型,会先转成int
定义常量
头文件的位置写上
#define 大写 数值
数学运算
+ - * / %
除法' / '与python的区别
int / int 结果为 int(整除)
四舍五入
iomanip头文件
<< fixed << setprecision() <<
条件分支
bool
true / false
全小写
cout << true //结果为1
cout << false //结果为0
逻辑运算
! not
|| or
条件A || 条件B
如果条件A成立,不会判断条件B,直接得出结果为true
&& and
条件A && 条件B
如果条件A不成立,不会判断条件B,直接得出结果为false
关系运算
>' < ' >= ' <= ' == ' !=
布尔类型的变量
bool和int 的关系
广义bool
bool is_bool = 5;
cout << is_bool;
结果为1
bool is_b = 条件表达式;
条件分支
语法
if (条件表达式) { 代码块 }
else if (条件表达式) { 代码块 }
else { }
布尔类型变量可作为分支条件
单分支、多分支、分支嵌套
循环结构
循环
for循环
语法
for (循环初始化; 循环条件; 每次循环后执行) {循环体}
与python的区别
在python和C++的for循环中修改变量i的值有什么区别?
变量的作用域
循环或分支结构的结构体中定义的变量只能在结构体中使用(局部变量)
while循环
语法
while (循环继续条件){ 循环体}
for循环和while循环的区别和使用场景
自增/自减
a++
先使用后增加
++a
先增加后使用
循环嵌套
循环控制
只能用在循环中
break
continue
数据类型
整数
unsign int
去掉符号位,增加数据存储的范围
int / short / long / long long
实数
float / double
字符类型char
char
特征:单引号括起来
ASKII码
分支主题
字符比大小
实际上是比较字符的ASKII码的大小
字符与整数互转
(char)65 结果为'A'
'A' + 6 结果为71
字符串string
字符串
使用字符串需要先包含头文件<string>
字符串初始化的方式
string s1;
cin >> s1;
string s2(s1); //用s1的值初始化s2
string s3 = "abcde";
string s4("abcde"); // s3和s4的值一样
字符串拼接
+
获得字符串长度
字符串名.size()
返回字符串长度,size不需要参数
字符串常用函数
以下是<string>中的函数
size() & length()
用法:字符串.size()/.length()
功能:返回字符串长度
注意:不需要填参数
find()
用法:字符串.find(子字符串)
功能:返回查找的子字符串在字符串中第一次出现的位置
注意:如果不存在子字符串,则返回string::npos,可用分支结构判断如果存在再进行操作(if (s.find(" ") != string::npos){} )
功能:返回查找的子字符串在字符串中第一次出现的位置
注意:如果不存在子字符串,则返回string::npos,可用分支结构判断如果存在再进行操作(if (s.find(" ") != string::npos){} )
insert()
用法:字符串.insert( int, string)
功能:在字符串中的int位置插入string,修改原字符串,并返回结果
注意:第一个参数为插入的位置,如果int>字符串.size(),则会报错:out of range.
substr()
用法:字符串.substr(int1[, int2])
功能:截取字符串的一部分,如果省略第二个参数int2,则从int1的位置开始截取到最后,如果有两个参数,则从int1开始,截取int2个字符,并返回结果
注意:
1.第二个参数不是结束的位置,是【截取的长度】
2.不会改变原字符串,有返回值
3.如果截取的长度超过字符串长度,则取到字符串末尾
功能:截取字符串的一部分,如果省略第二个参数int2,则从int1的位置开始截取到最后,如果有两个参数,则从int1开始,截取int2个字符,并返回结果
注意:
1.第二个参数不是结束的位置,是【截取的长度】
2.不会改变原字符串,有返回值
3.如果截取的长度超过字符串长度,则取到字符串末尾
replace()
用法:字符串.replace(int1,int2,string)
功能:将字符串中第int1的位置开始,往后的int2个字符,替换成string,并返回结果
注意:
1.会改变原字符串
2.int2为替换的长度,不是位置
3.长度超过字符串长度,不会报错
getline()
用cin写入字符串到变量中时,遇到空格会被中断,getline()函数可以获取整行输入
用法:getline(cin, str)
作用:与cin类似,获得用户输入并存到变量str中,遇到空格不会中断
字符串.begin()
返回一个迭代器,指向字符串第一个字符
字符串.end()
返回一个迭代器,指向字符串最后一个字符的下一个位置
数组array
定义数组与定义变量一样,需要声明数据类型,变量名后加[ ],定义时[]内写上长度,如果不写长度,则需要在定义时赋值,用{ } 将值括起来,长度即为数据的数量
定义数组的方法:
int a[3];
a[0] = 1;a[1]=2;a[2]=3;
int b[ ] = {1,2,3};
定义时如果写上:
int a[6] = {1,2,3};
则数组a中前三个数据被初始化,剩余元素默认为0 ( double、long long和bool也默认为0)
如果是char和string,没初始化的元素默认为空格
数组可以是任意类型:int / char / bool / string /double / long long
数组定义后不能修改长度
以后再学添加元素的方式
for 循环遍历数组
连续输入,存进数组的方式
二维数组
二维数组可以看作由特定数量的一维数组组成
声明二维数组:
数据类型 变量名[x][y];
x为行数row,为一维数组的数量;
y为列数col,为一维数组的长度。
二维数组初始化
int array[2][3] = {{1,2,3} , {4,5,6}}
常见问题
行求和
对角线求和
矩阵翻转
水平翻转
竖直翻转
旋转
对角线翻转
列求和
三维数组/多维数组
排序
<algorithm>
reverse()
对字符串操作
用法:reverse(str.begin(),str.end())
作用:将str从头到尾颠倒
对数组操作
用法:reverse(数组+i, 数组+j)
作用:将数组中第i项到第(j-1)项倒置,其他元素不变
直接对目标数组进行操作及修改,并返回修改后的结果
需包含<algorithm>头文件
sort排序
作用:对数组进行排序,可排序任何类型的元素,包括自己定义的结构体
用法:sort(arr + i, arr + j [,排序方法])
默认从小到大排序
作用:对数组arr的第i项到第j-1项进行从小到大排序,i如果省略,即从第一项开始。
加入排序方法greater:
从大到小排序
sort(arr+i, arr+j , greater<数据类型>() )
greater<数据类型>( )
表示排序方式为从大到小,< >内写入需要排序的数据类型,最后不要忘了加括号( )
修改排序方法
sort(arr+i , arr+j , 排序规则函数名)
函数的作用是定义排序规则
作用:让数组按照自定义函数的规则排序,使用之前需要先定义函数,函数名可自行命名,一般定义为cmp(compare)
bool cmp(int a, int b){
return a > b;
}
注意:定义的函数返回值是bool类型,有两个参数,返回值为交换的规则,a > b则从大到小排序,返回值中只能用 < 和 > 号
sort 函数的 cmp 必须按照规定来写,即必须只是 > 或者 < ,⽐如: return a > b; 或 者 return a < b; ⽽不能是 <= 或者 >= ,因为快速排序的思想中, cmp 函数是当结果为 false 的 时候迭代器指针暂停开始交换两个元素的位置,当 cmp 函数 return a <= b 时,若中间元素前⾯的 元素都⽐它⼩,⽽后⾯的元素都跟它相等或者⽐它⼩,那么 cmp 恒返回 true ,迭代器指针会不 断右移导致程序越界,发⽣段错误~
段错误就是指访问的内存超出了系统所给这个程序的内存空间。
分支主题
数学函数
使用数学函数需包含<cmath>头文件
pow(a, b)
幂函数,两个参数,返回a的b次方
abs / fabs
取绝对值,fabs取实数的绝对值
log / log10
log是以e为底的对数,log10是以10为底的对数
参数都为实数,返回的也是实数
三角函数
sin,cos,tan,asin,acos,atan
参数都为实数,返回的也是实数
round / floor / ceil
四舍五入 / 向下取整 / 向上取整
参数都为实数,返回的也是实数
需要注意的是负数小数的问题
sqrt
平方根函数 square root
max() / min() /fmax() / fmin()
传入两个参数,返回较大 / 较小值
<algorithm>和<cmath>中都有这两个函数
拓展知识:
宏定义
#define 名字 数值
关键字:sizeof( T )
得出参数T占的内存空间大小,
参数T可以是变量,也可以直接写数据类型
注意:sizeof( string ) 的结果不是字符串的长度,字符串的存储空间会改变,所以不能用sizeof来计算字符串的长度。
计算字符串长度的方法:s.size( ) / s.length( )
替换变量的值
swap(a, b)
作用:替换变量a和b的值,
变量的数据类型必须一样。
改变数据小数位数的几个方法
如:pi = 3.1415926
1.强制转换
cout << (int)pi ; // 输出结果是3
去掉小数部分
2.标准化格式
printf("%.0f \n", pi)
需包含头文件cstdio
%.0f
——[.0]表示输出保留0位小数,其他舍去
——%表示%后面的内容需要标准化,由后面的参数给出
——f表示参数的类型是实数float
——\n表示换行,\t表示tab
3.ceil( )
进位
4.floor( )
舍位
5.round( )
四舍五入
头文件
<iostream>
input-output-stream
输入-输出-流
cin
>>
cout
<<
sizeof()
swap(a,b)
交换两个类型相同的变量的值
一定是变量与变量之间交换
<iomanip>
cout << fixed << setprecision(位) << 要输出的内容
<string>
size() / length()
find()
insert()
substr()
replace()
getline()
begin() / end()
<algorithm>
reverse()
sort()
<cmath>
min(a,b)
max(a,b)
数学函数
<cstdio>
printf()
拓展知识
编程语言的分类
(按程序运行的方式分)
翻译型
边运行,边翻译
翻译助手
优点:兼容性强
python,Java,C#,RUBY,VB,basic,Php
解释型
将代码翻译成机器语言后运行
译文
优点:运行速度快
C++,C
电脑快捷键
https://www.bilibili.com/video/BV1oQ4y1P78A?from=search&seid=16288638933249774185
上课要求
上课流程
1.计算机理论知识
2.本节课学习内容讲解
3.题目练习
4.题目讲解&分享
5.课后作业
习惯要求
课后练习
保存文件格式
编程习惯
不要偷懒
学会用思维导图记笔记
笔记除了记重点内容以外,
还要写上自己的理解和重点
笔记中专门留一栏,记下出现过的错误类型并写下错误的原因,出现一次,在笔记上+1次,
记下头文件及使用到的函数
full of passion, curiosity
learn how to learn on the internet
Don't get into it
Get a sense of accomplishment by solving problems
收藏
收藏
0 条评论
下一页