c语言第一座大山一、一维数组解决的问题需要定义大量同种类型变量的问题。1.定义方式类型说明符 数组名 [常量表达式]1类型说明符用来说明数组中变量的类型int、flaot、char等2数组名是一个标识符代表一组变量的集合起名规则和变量命名规则一致。3[常量表达式][ ]表示定义的是一个数组常量表达式表示数组的长度即数组中变量的个数。注意这里常量表达式必须是整型的在c99标准之后不要求必须是常量也可以使一个变量但是为变量时不能初始化若初始化将出现以下错误;:因为不能确定输入数字所以这里出现了数组初始化器中存在多余元素的警告。2.数组初始化和赋值1初始化a.初始化部分编译器会将值一次给到数组元素为初始化部分将会默认给0b.全部初始化一个数值对应一个数组元素初始化时还可以省略数组长度但是必须对其进行初始化数组最终长度也由初始化值个数来推算。c.初始化为0的方式2赋值通过a[ ] ;的形式赋值要给到数组中的具体元素而不是整个数组。不能出现以下这种情况3.数组的下标数组的下标代表了相对于首元素的偏移量所以第一个元素为a[0]其取值范围是[0,长度-1]若下标不在范围内时叫数组越界他的值会是一个随机值此时编译器不会帮我们检查需要我们自己注意。4.数组名类型角度数组名代表了对应的数组类型。数值角度数组名代表了数组首元素的地址。5.数组的特点1连续性数组在内存中占的是一片连续的空间。2单一性一个数组中存放的是同一类型的数据。3有序性在内存中第一个元素后面是第二个元素... ...二、练习今天有几个比较有意思的练习可以拓展我的的编程思路1.找出数组元素中的最大值和次大值本题要注意最大值出现在第一个和其他位置两种情况方法1这是主播自己的思路可能有点野路子方法二此法比较正宗这里的INT_MIN就是int型变量的最小值也就是0x80000000这里是先求出最大值然后通过在整个数组里面不是上一个最大值的次大值。2.数组逆序方法1此法比较常见即前后交换即可方法2通过变量i和j来决定交换的数据即i从数组开头开始j从数组结尾开始其实也就是把方法1的len-1-i定义为j。三、排序非常重要1.选择排序核心思想给合适的位置选择合适的数因为C语言中的排序大多数为升序排列所以出合适的数是指在a[0]处方最小的值依次增加在a[n]处放最大的值那么问题就变成了找到未排序部分的最小值这里使用擂台法即首先将a[0]处作为擂台将a[0]与a[1]进行比较如果a[1]小则两个数据进行交换如果a[1]大则不进行交换依次类推找出最小值放在a[0]处下面以a[1]作为擂台继续进行这类比较直到确定a[n-1]位置上的数因为只剩a[n]一个数所以不需要比较了)算法步骤外层循环控制要找的位置内层循环控制要找的数