今天更新较晚主要是因为高数太难学了喵费了很多功夫现在才有时间写文章。正文一 分支与循环剩余部分Go to语句可以直接从字面意思上理解Go to就是去到那里作用是可以无条件地跳转到函数内设置的标号处在分支与循环中它的主要作用有两个一个是 Go To 本身可以构成一个循环#include stdio.hint main() {int i 0;start:printf(当前 i 的值是: %d\n, i);i;if (i 5) {goto start;}printf(循环结束\n);return 0;第二个作用就是一次性跳出多层循环。虽然用起来很方便但是并不建议使用GoTo语句因为在复杂的程序之中滥用 Go to 会导致程序的逻辑混乱不仅使阅读者困惑而且还容易出现难以找到的 bug。二 分支与循环的运用随机数生成当我们学完了分支与循环的基础入门知识之后便可以尝试了解一些进阶的机制随机数生成就是我在网上找到的一个不错的例子总共需要用到3个函数rand srand time。就我个人的学习感受而言这一部分像是一个分水岭很考验人的理解能力。我们的电脑该如何生成随机数呢要知道电脑虽然叫电脑但实际上它并没有脑子只是一个能运行系统的二进制机器而这里我们讲到的随机数生成并不是真的想出来随机几个数字而是从电脑中存储的一个很大的数字中截取一部分。想象电脑之中存放的一本写满数字的书Time 函数要做的就是选书中的一页而页码就是当前的时间srand函数就翻到那一页,而 round 就是把这一页某一部分撕下来最后就得到了一个随机的数字。以下部分为官方语言(我目前的水平写不出来这么专业的话):rand()函数int rand(void);作用返回0到RAND_MAX之间的伪随机数。头文件stdlib.h特性默认种子为 1若不加干预每次运行程序产生的随机数序列完全相同。srand()函数void srand(unsigned int seed);作用初始化随机数生成器的种子。只要种子发生变化生成的随机数序列就会不同。注意在一次程序运行中只需在开头调用一次即可切勿在循环中频繁调用。time()函数time_t time(time_t* timer);作用返回当前日历时间即从 1970 年 1 月 1 日 0 时 0 分 0 秒到现在的秒数差称为时间戳。头文件time.h用法参数传NULL时仅返回时间戳。time_t本质是 32 位或 64 位整型2. 随机数生成的标准写法利用时间戳作为种子是保证每次运行结果不同的经典做法#includestdio.h#includestdlib.h#includetime.hintmain() {srand((unsigned int)time(NULL));//用当前时间做种子printf(%d\n,rand());//产生并打印随机数return0;}解决了如何取随机数之后,应用层面还存在一个问题,数字太大了不符合应用场景,比如像我们要出去吃饭从 0~300 随机选一个数字结果用这个程序一下子弹出来个114514。所以我们要控制它的范围用下面这个结构rand%多少个数从几开始比如要1~300一共300个数从1开始便是3001。三 数组一 数组基础概念数组是一组相同类型元素的集合。数组元素个数不能为 0主要分为一维数组和多维数组最常见的是二维数组。二 一维数组数组就是集合可以理解成相同类型的数据放在一起。int arr[5]//创建能放5个整数的数组double a[10]//创建能放10个浮点数的数组数组也是可以初始化的,有以下几种方式1. 全部初始化2. 部分初始化。比如创建一个数组 b 可以储存 5 个整数如果只初始化 1、2 的话后面会自动补上 3 个 0也可以全部初始化为 1、2、3、4、53. 不指定长度让编译器自己数。如果你只初始化了 3 个数字。编译器便会自动认为你创建的数组可以储存 3 个数4. 全部变成 0。第一个写 0后面所剩的自动也会补成 0 (int d[10]{0};)不对数组进行初始化只是创建了一个数组那么数组中所储存的为垃圾值也就是内存中原来残留的东西并不是 0。三 数组的使用与内存储存1、元素的访问数组中的元素访问通常从第 0 位开始依次往后排比如像数组中储存的第一个数字是 100那么这个 100 它的下标便是 0而在调用数组中的数据时会从下标0开始将数组中的数据依次往后过。2 数组的内存存储:创建数组其实就是在内存之中划定了一片连续的空间空间中的每个元素紧挨着。比如像 int 型占四个字节所以相邻的元素地址差四。数组名本质上就是这片连续空间的首地址名。3 数组的经典算法:1、求最大值或最小值2、求和与平均值3、数组反转4、冒泡排序对于一个有序的数组例如从大到小或从小到大我们可以使用二分查找二分查找的操作方法可以类比于高中数学中的利用区间二分法求函数零点两者的原理是相似的每次把数组从中间劈开看目标是在左边还是右边排除一半然后继续查找继续二分,直到找到目标为止。受篇幅限制没有办法把代码展示出来在明天更新的文章中我会将经典算法以及二分查找所用的代码例子写出)总结:今天主要学习了分支与循环的剩余内容以及一个重点的实战案例,同时入门了一部分数组的知识,从今天开始,往后的内容,理解难度又再上了一个台阶。今天所学的最难的部分感觉还是随机数的生成实在是不好理解。打了2000多字累死我了喵