0基础学C++
万能头文件#include<bits/stdc++.h>
Day1
一.C++常识
- 注释
单行注释://
多行注释:/* */
- 变量
语法:数据类型 变量名 = 变量初始值
- 常量
#define 常量名称 常量值
通常在文件上方定义,常量不能再发生改变
const 数据类型 常量名 = 常量值
在变量定义前加上const,修饰该变量为常量,不可修改
- 关键字(标识符)
在定义变量和常量时,不能使用关键字
- 标识符命名规则
标识符不能是关键字
标识符只能包括字母,数字,下划线组成‘
第一个字符为字母或下划线
二.数据类型
存在意义:给变量分配合适的内存空间
1.整型
short(短整型)2字节 (-32768~32767)
int(整型) 4字节
long(长整型) 4字节
long long(长长整型)8字节
区别在于所占内存空间不同,取值范围不同
2.sizeof关键字
sizeof可以统计数字类型所占的内存大小
语法:sizeof(数据类型/变量)
3.实型(浮点型)
用于表示小数
单精度float 4字节 7位有效数字
双精度double 8字节 15~16有效数字
赋值为小数时会默认类型为double
float 变量名 = 变量值f;
3.1.
科学计数法
例:
3e2表示3*10的二次方
3e-2表示3*10负二次方
4.字符型
字符型的变量用于显示单个字母
语法: char 变量名 = ‘a’(用单引号,单引号内只能有一个字符)
字符型变量不是把字符本身储存到内存中,而是将对应的ASCII编码放入存储单元
a –97 A - 65
- 转义字符
用于表示一些不能显示出来的ASCII字符
\a警报
\b退格,将当前位置移到前一列
\f换页,将当前位置移到下页开头
\n换行,将当前位置移到下一行开头
\r回车,将当前位置移到本行开头
\t水平制表(跳到下一个tab位置)八个字符的长度
\v垂直制表
\\代表一个”\”
\’代表一个单引号字符
\”代表一个双引号字符
\?代表一个问号
\0数字0
\ddd 8进制转义字符,d范围0-7
\xhh 16进制转义字符,h范围0-f
- 字符串型
c风格字符串
char 变量名[] = “字符串值”
c++风格字符串 #include<string> 使用c++风格字符串要包含这个头文件
string 变量名 = “字符串值”
- 布尔类型bool
布尔类型只有两种值,占一个字节
True—真(本质是1)
False—假(本质是0)
- 数据的输入
语法:cin >> 变量
布尔类型输入只要是非0的值都是真
三.运算符
算数运算符:用于处理四则运算
赋值运算符:用于将表达式的值赋给变量
比较运算符:用于表达式的比较,并返回一个真值或假值
逻辑运算符:用于根据表达式的值返回真值或假值
- 算数运算符
+,-,*,
/ 两个整数相除,结果依然是整数,将小数部分去除,
%取余 例10/3=1(两个小数是不可以进行取余运算的)
++前置递增 a=2;b=++a; a=3 b=3 让变量+1
++后置递增 a=2 b=a++ a=3 b=2 让变量+1
--前置递减 a=2 b=--a a=1 b=1
--后置递减 a=2 b=a— a=1 b=2
前置后置区别
前置会先让变量+1然后再进行表达式的运算
后置先进行表达式的运算后让变量+1
- 赋值运算符
= 赋值 +=,-=,*=,/=
先进行等号前的运算再=
例a += 2 等价于a = a + 2
- 比较运算符
用于表达式的比较,并返回一个真值或假值
==,!=,<, >。<=,>=
Int a = 10
Int b = 20
cout << (a == b) << endl;
括号为优先运算符
- 逻辑运算符
!非 例:!a 如果a为假,则!a为真,如果a为真,则!a为假
&& 与 a && b 如果a和b都为真则结果为真,否则为假
|| 或 a || b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假
四.程序流程结构
顺序结构:程序按顺序执行,不发生跳转
选择结构:依据条件是否满足,有选择的执行相应功能
循环结构:依据条件是否满足,循环多次执行某段代码
1.选择结构
If语句
单行if语句
语法:if(条件){条件满足后执行的语句};
多行if语句
语法:if(条件){条件满足后执行的语句};
else(条件){条件不满足执行的语句};
多条件的if语句
if(条件1){条件满足后执行的语句};
else if(条件2){条件满足后执行的语句};
………
嵌套if语句
好像没啥可写的…
三目运算符
通过三目运算符实现简单的判断
语法:表达式1 ? 表达式2 : 表达式3
c = (a > b ? a : b);
意义为若a>b将a值返回到c,否则将b值返回到c(括号是为了先做优先级的比较)
Day2
switch语句
执行多条件分支语句
判断时只能是字符型或整型,不能是一个区间
结构清晰,执行效率高
case里如果没有break,程序会一直向下执行
语法:
switch(表达式)
{
case 结果1: 执行语句;break;
case 结果2: 执行语句;break;
……
default:执行语句;break;
}
五.循环结构
1.while循环语句
作用:满足循环条件,执行循环语句
语法:
While(循环条件)
{循环语句}
只要循环条件的结果为真
2.do…while循环语句
语法:
Do{循环语句} while(循环条件);
与while的区别在于do…while会先执行一次循环语句,再判断循环条件
3.for循环语句
语法:
for(起始表达式;条件表达式;末尾循环体){循环语句;}
例:
for(int i = 0; i < 10;i++)
{
cout << 1 << endl;
}
- 嵌套循环
没啥写的,重在理解其中的逻辑
千万要记得每个循环语句对应的指令要在对应的大括号内!!!!!!!
- 跳转语句
break语句
作用:用于跳出选择结构或循环结构
- 出现在switch条件语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
continue语句
作用:再循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
goto语句
作用:可以无条件跳转语句
语法:goto 标记;
标记:(冒号 )
如果标记的名称存在,执行到goto语句是,会跳转到标记的位置(飞雷神之术)
六.数组
1.概述
数组就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
2.一维数组的定义方式
(1)数据类型 数组名[数组长度(元素个数)]
(2)数据类型 数组名[数组长度] = {值1,值2…};
(3)数据类型 数组名[(自己会推测长度)] = {值1,值2….};(自我感觉最方便)
可以利用循环输出数组中的元素
3.一维数组数组名
一维数组数组名的用途:
(1)可以统计整个数组在内存中的长度
(2)可以获取数组在内存中的首地址
占用的内存空间 = 元素个数*数据类型所占内存