本单元进行了数组的学习,同时有了之前顺序结构到循环结构的逐渐复杂的变化深入,数组的出现帮助我解决了前面很多困难使得大部分的程序的繁琐复杂有了很好的改善,我认为程序设计最有趣的地方之一就是可以把所接触到的东西以不同的方式都能连接起来,这里数组的应用还用到了高等代数的矩阵(虽然我高代也很烂。。。)也很深刻的感受到了难度等级的提升,现在作业的题有很多攻克不了的,好头疼,还很心累。
一、重要知识点总结
1.数组:数组是一种数据格式,能够储存多个同类型的值。Eg:数组可以存储60个int类型的值(这些值表示游戏五年来的销售量)、12个short(这些值表示每个月的天数)或365个float值(这些值指出一年中每天在食物方面的开销)每个值都存储在一个独立的数组元素中,计算机在内存中依次储存数组的各个元素。定义格式: 类型标识符 数组名[常量表达式];(类型标识符可以为任何基本数据类型或结构体;数组名必须是合法的标识符;常量表达式的值为数组元素个数。)
int d[50],g[100];
int a[5*10];
#define N 50
int b[N];
引用数组的格式: 数组名[下标 ] ( 下标只能为整型常量或整型表达式,值必须在数组定义的下标范围内,不能一次引用整个数组,只能逐个引用数组的单个元素。)
2. 一维数组的输入与输出:利用循环语句结合下标变化逐个输出数组元素,例如,输出一个数组可以写成:
int h[100];
for(i=0;i<100;i++) cout<<h[i];
数组赋值: A键盘读入:
int h[100];
for(i=0;i<100;i++) cin>>h[i];
B直接赋值:
int h[100],a[20];
for(i=0;i<100;i++) h[i]=0;
for(i=0;i<20;i++) a[i]=i*2+1;
3.一维数组的插入与删除:插入一个元素,需要先找到插入的位置(假设下标为x)将这个元素及其之后的所有元素依次往后移一位(注意要从后往前进行操作)再将给定的元素插入到位置x。删除某一个元素也要先找到删除的位置(假设下标为x),将下标为x+1及其之后的所有元素依次向前移一位,覆盖原来位置上的元素。
4. 一维数组的查找统计:常见查找算法:“顺序”查找和“二分”查找。
顺序查找:按从前到后的顺序,将数组中的元素依次与要查找的数x进行比较。
二分查找:又叫“折半”查找,其优点是比较次数少,查找速度快
5.一维数组的元素排列:最基本的三种排序算法:选择排序、冒泡排序和插入排序,它们本质上都是通过数组中的元素比较和交换来实现的,所以关键是数组下标的分析。
6. 二维数组的定义和操作:如果一维数组的每一个元素又是一个一维数组,则称之为二维数组。
格式:类型标识符 数组名 [常量表达式1] [常量表达式2];
(常量表达式1的值表示第一维大小,常量表达式2的值表示第二维大小,二者乘积就是二维数组的元素个数。)
在二维数组定义的同时,可以进行初始化赋值,例:
int a[2][3] = {{1,2,3},{4,5,6}};//分行初始化
int a[2][3] = {1,2,3,4,5,6}; //不分行初始化
以上两种初始化都相当于下面6个语句:
a[0][0] = 1; a[0][1] = 2; a[0][2] = 3;
a[1][0] = 4; a[1][1] = 5; a[1][2] = 6;
也可以给数组中的部分元素初始化,例如:
int a[2][3] = {{1,2,},{4}};
二维数组本质上是一维数组的每一个元素又是一个一维数组,而计算及内部存储一维数组采用的是连续存储单元。所以二维数组的存储方式是:行优先 的连续存储。
8.数字方阵:一个行列数相等的二维数组,其中的每个元素都是数字。一般有模拟法和解析法。
9.字符数组:如果数组中的每个元素都是一个字符,这样的数组称为字符数组有时,把一维字符数又称为“字符串”定义字符数组的方法与定义其他类型数组的方法类似。给字符数赋值的方法很多,例如:
用字符常量逐个初始化:char letter[3]=[‘a’,‘e’,‘o’]
用赋值语句逐个元素值letter[o]=‘a’
二、重难点与易错点
1.数组定义好之后,可以引用数组中的任意一个元素,但是不能一次引用整个数组,只能引用单个的元素!
2. 整体”赋值①memset函数:“按字节”赋值,一般用于char型数组,若是int类型的数组,一般赋值为0或1。使用前包含头文件#include<cstring>。②fill函数:“按元素”赋值,可以是整个数组或部分连续元素,可以赋任何值。需包含头文件#include<algorithm>。
3.数组的插入和删除中,一定要注意数组下标定义的要足够大!
4.全局统计可在定义变量前输出值,局部统计只在统计开始前输出
三、总结与心得
现在学的东西越来越多,选择性也变多了,很多时候搞不清到底该准确地用什么语句表述,强调了很多遍的问题和细节还是会出错误,一道问题尝了很多遍还是没头绪的时候,很容易自己给自己画一个圈变成思维局限把自己禁锢住了,在以后的学习中,应该再大胆些,多用创新的思维去尝试。
来源:CSDN
作者:Redemption_?
链接:https://blog.csdn.net/Jamie_kk/article/details/103692829