这一章的主要内容是数组,通过对数组的学习,我能够运用数组解决更多复杂的问题,但是尽管用数组解决问题,更加方便,但不得不承认,这一章的题目难度也明显增高,挑战性也随之增强,下面是我对数组这一章的主要内容的总结。
一维数组
一,一维数组的定义
速度就是一堵相同的变量,他们往往都是为了表达同一批对象的统一属性,如一个班级的所有同学的身高,速度可以是一维的,也可以是二维或多维的。
1.一维数组的定义
格式:
类型标识符 数组名[常量表达式];
注意:
1.数组名代表首地址
2.数组大小必须是常量一旦定义不能改变
3.类型标识符可以是任何基本数据类型,也可以是结构体等构造类型相同类型的数组,可以一起定义
4.数组名必须是合法的标识符
5.常量表达式的值即为数组元素的个数
2.一维数组元素的引用数组定义好后就可以引用数组的任意一个元素,需要注意的是,下标准能为整型常量或整型表达式值,必须在数组定义的下标范围内,否则会出现下标越界错误,同时不能一次引用整个数组,只能逐个引用数组的单个元素
3.因为速度的储存结构
二、一维数组的输入与输出
输入
1.键盘读入
2.直接赋值
C++中韩提供了两个函数给数组整体赋值
1.Memset,函数
memset函数是给数组按字节进行赋值,一般用在char型数组中,如果是int类型的数组,一般赋值为0和-1。
头文件:#include<cstring>
2.fill函数
fill函数是给数组按元素进行赋值,可以是整个数组,也可以是部分连续数组,可以赋任何值。
头文件#include<algorithm>
经典例题:下楼梯。
三、一维数组的插入删除
在实际应用中,经常需要在数组中插入一个元素,或者删除数组中的某一个元素,称为数组的插入操作,或者删除操作。
四、一维数组的查找统计
一维数组的查找操作就是在一维数组中查找有没有某个元素,它的值等于指定的值x。
方法:顺序查找和二分查找
1.顺序查找
顺序查找就是按照从前往后的顺序将数组中的元素依次与要查找的数x进行比较
2.二分查找,又称折半查找,优点是比较次数少,查找速度快。
五、一维数组的元素排序
排序就是按照某个关键字的大小将若干对象从小到大,或者从大到小进行重新排列。
排序算法:
1.选择排序
选择排序的基本思想是煤炭从大排序的数据中通过打擂台比较选出最小元素,放在这些数据的最前面。
2.冒泡排序
冒泡排序的基本思想是从第一个数开始,依次不断比较相邻的两个元素,如果逆序就交换这样一趟,排序结束后最大的元素就放在了第n个位置了。
3.插入排序
插入排序的基本思想是把所有的排序元素分成前后两段,前一段是已经排好序的,后一段是带排序的每一趟都是把后一段的第一个数插入到前一段的某一个位置,保证前一段仍然是有序的。
二维数组
六、二维数组的定义和操作
1.二维数组的定义和初始化
格式:类型标识符 数组名[常量表达式1][常量表达式2]
2.二维数组的存储和元素引用
二维数组的存储方式是行星优的连续存储,先逐个存储第0行上的所有元素,在逐个存储一行上的所有元素,依次类推。
格式:数组名[下标1][下标2]
3.二维数组的输入输出
二维数组的输入输出操作也是针对每一个元素进行结合,两个维度的下标变化,用循环嵌套实现。
七、字符数组
如果数组中的每一个元素都是一个字符,这样的数组称为字符数组。
1.字符数组的赋值方法
1).用字符常量逐个初始化
用赋值语句逐个元素赋值
用scanf读入整个数组
用scanf逐个元素读入
用cin输入整个数组
用cin逐个元素输入
用gets读入整个数组
用getchar逐个读入
注意:
1.用gets,读入整个数组可以读入空格,用其他方式读入数组则空格作为间隔符,不作为文字的内容
2.一个字符数组,只能存一个字母。
字符数组的输出方法
用cout输出整个数组
用cout逐个元素输出
用printf输出整个数组
用printf逐个元素输出
用puts输出整个数组
用putchar逐个元素输出
这一章还需要注意
1.计算机正常一秒运算速度不超过十的九次方,
2.全局统计只在运算前复初值,局部统计只在开始统计前复初值
通过对这一章的学习,我对C++有了更深的了解,尽管这一章的题目比较难,但数组的学习让这些难题也变得有方法可做,不至于像以前一样摸不着头脑,这一章对于程序思维的考验也明显上升,但通过这一单元的学习与习题的练习,我们的程序思维也提升了不少,我们也学会了如何将复杂的题目交给程序去做,程序擅长的是计算,你只需要将你的思维以正确的形式输入进去,然后能高效的得到准确的答案,这种成就感满满,同时通过对题目的练习,我也发现了许多自己在编写程序上的不足,最大的体会就是要心细,总而言之,加油吧,少年!!!