一、知识点总结
1、数组是一组具有相同类型的变量的集合,使用一个统一的名字标识一组变量,通过整型下标访问数组元素;
2、int a[10]中a的含义:
a、数组名称; b、地址常量,不可更改; c、首地址;
3、数组下标从 0开始,如a[5]的数组元素为:a[0]、a[1]、a[2]、a[3]、a[4];
4、定义数组时不能使用变量定义数组的大小;
5、定义但未初始化的数组元素的值为随机数;
6、数组元素的初始化:
a、将元素值放在“=”后面用一对花括号括起来的初始化列表中;
b、初始化列表中提供的初值个数不能多余元素个数;
c、若未对数组定义大小时,系统会自动按照提供的初值个数对数组进行初始化并确定数组的大小;
d、若初值个数小于数组大小,则从前往后依次对元素赋值,剩余元素自动为0;
7、数组元素全部初始化为 0可以简写为{ };
8、为防止数组越界,一般将数组大小适当放大;
9、尽量将数组定义为全局数组,全局数组开的大;
10、字符常量占一个字节,而字符串常量占用字节数等于字符串的字节数加一,增加的一个字节中存放字符串结束标志'\0';
11、一个字符数组的输入可用scanf或gets语句;
12、scanf语句:
a、scanf("%s",字符数组名);
b、字符数组名前不加“&”;
c、输入多个字符串时,以空格分隔, 如Let us go,用scanf("%s%s%s",s1,s2,s3);
d、scanf语句读到空格结束;
13、gets语句:
a、gets(字符串名称);
b、gets只能输入一个字符串,读到行末;
14、输出字符串用printf或puts语句,二者等价;
15、printf:
a、printf("%s",字符串名称);
b、输出字符串不包括字符串结束标志符'\0';
16、puts:
a、puts(字符串名称);
b、输出一个字符串和一个换行符,自动换行;
17、处理字符串时,一般用到cstring函数;
18、数据排序方法有:选择排序、冒泡排序、插入排序、桶排序、快速排序、归并排序等;
19、sort排序:
a、调用函数库algorithm;
b、默认升序排列;
c、sort(首地址,尾地址); ;
20、查找有线性查找(顺序查找)、折半查找等;
21、折半查找平均速度快;
二、解决问题
1、处理数据较多时,依靠数组可以使程序简单化;
2、打印图形;
3、矩阵问题;
4、最值问题;
5、对角线问题;
6、密码问题等。
三、学习体会
数组的使用简化了程序由于数据量大造成的繁琐问题,使用二维数组可以打印出各种漂亮的图形。就像校门外的树那道题,刚开始的时候我没有想到利用 0与1,费了很长的时间来思考区间重合部分如何处理,结果用了很久的时间也没有AC,最后忽然豁然开朗,想起之前学长给我们讲过这种处理,巧妙的利用数组与循环,0与1之间的关系,很简单的就把问题给解决了。另外扫雷问题,关于一个位置的周围位置,可以用二维数组以及+1、-1来简单的表示,这种用法在程序中都很普遍。
数组知识点没多少,使用方法也很简单,利用几个for循环,就可以实现输入与输出,所以数组的关键是在于问题的解决,要善于对数组元素巧妙的赋值,来巧妙的简化问题,还要灵活的把数组与循环等结合起来。