流程控制
分支-选择执行到那一段代码
if 语句
if() 如果括号里面的表达式为真 那么
{
就执行括号里面的代码
}
else 否则就执行else里面的代码
if(a)
b; 先判断a的真假 如果为真则执行b 如果为假就不执行 有else就执行else
if(a)
b;
else if(c)
d;
else if(e)
f;如果A为真执行b 如果a为假判断c的真假
如果c为真执行d 如果c为假就执行e 如果e为
真就执行f,如果e为假则继续判断后面的条件的真假
找不到执行的 就什么都不做
switch - case - break - default
switch(A)
{
case 常量1:b;break;
case 常量2:c;break;
default: f; break;
}
如果a是A的某一个值 那么就会执行case后面的表达式比如执行b 那么就会跳出
常量2同上 如果说 default就是说你执行最上面的两个代码,都没有的话就执行这个default里面的语句
break跳出循环
单语句和复合语句的写法
单语句:
std::cout<<"1"<<std::endl;
复合语句:
{
std::cout<<"1"<<std::endl;
std::cout<<"1"<<std::endl;
std::cout<<"1"<<std::endl;
}
for循环
for while do_while循环
for(A;B;C)
D;
1首先执行A
2然后判断B的真假
3如果B为假则跳出循环
4如果B为真则执行D 之后执行C
5然后重复2
for(int i = 0; i < 10; ++i)
std::cout<<i<<std::endl;打印出来结果是0123456789
i是循环变量 int i = 0 循环起始条件i 可以换成任何的标识符(第一章有讲解)
局部变量
if(1)
{
int b;
}
b = 123; error 错误的写法 因为b只在if的这个判定里面的作用域有用
while循环
int i = 0;
while(i < 10)
{
std::cout<<i<<std::endl;
i++;
} 1判断while()括号里面的真假
2 如果括号里为真那么就执行b 然后重复1
3 如果括号为假 就跳出循环
do_while这里不做过多解释(太费神了!)
数组:
int a = 10; 在内存中开辟四个连续的字节块
int b[10]; 内存中开辟了sizeof(int) * 10 个 即40个字节的连续的内存空间
并将该内存空间的首地址(第一个字节的地址)命名为b;
定义了一个长度为5的整数类型的数组 数组名为a 定义数组 数据类型 数组名[数组长度]
在定义数组时 []内必须是长度大于0的常量表达式
b[ 1 ]访问数组中第二个元素
数组定以后[]是下标运算符这里下标可以使结果是整数的任意表达式
下标访问是有范围的 长度是n的数组 访问范围是0 ~ n -1;
Stack around the variable 'a' was corrupted.
内存越界,用了不应该使用的内存
数组 三种初始化 方式
int c1[5] = {1,2,3,4,5}; 存的是 12345
int c2[5] = {1,2,3}; 存的是12300
int c3[] ={1,2,3}; 长度为3 存的是123
错误提示: int c4[] = {}; 不能分配常量大小为0的数组
随机数:
随机数就是在一个基本的数据上面按照一定的规则经过运算得到的一个数字
这个基本的数据我们叫随机种子
srand() 取随机数种子
time(0) 获取1970年1月1日0时0分0秒到当前计算机所经历的时间秒数
srand((unsigned int)time(0)); 取了随机数种子 每一次的随机数都不一样
int a = rand() % 5;得到一个随机数范围为0-4
选择排序 冒泡排序 折半查找(自己写一遍)