一维数组、选择排序
1. 为什么需要数组解决大量同类型变量的定义问题。例如要存储1000名学生的成绩如果逐个定义int score1, score2, ...极不方便。数组就是有序数据的集合可以批量定义变量。2. 一维数组的定义基本语法类型说明符 数组名[常量表达式];类型说明符数组中每个元素的类型如int,float,char。数组名标识符命名规则与变量相同。[常量表达式]表示数组长度元素个数必须是整型。C99标准之后长度可以是变量可变长数组但不能初始化。示例int score[1000]; // 定义了一个包含1000个int型元素的数组3. 数组的初始化初始化方式代码示例说明全部初始化int a[10] {1,2,3,4,5,6,7,8,9,10};依次给每个元素赋值部分初始化int a[10] {1,2,3,4,5};前5个赋值后5个自动补0不初始化int a[10];元素值为随机值垃圾值全部初始化为0int a[10] {0};或int a[10] {};所有元素为0省略长度int a[] {1,2,3,4};长度由初始化值的个数决定此处为4注意数组不能整体赋值例如a {1,2,3};是错误的。只能对单个元素赋值例如a[0] 2;。4. 数组元素的引用访问使用下标运算符[]语法数组名[下标]下标取值范围0 ~数组长度-1示例int a[10]; a[0] 100; // 给第一个元素赋值 printf(%d, a[9]); // 输出最后一个元素5. 数组的重要特点特点说明连续性数组元素在内存中占据一片连续的空间单一性所有元素类型相同有序性元素按顺序排列第0个后面是第1个依次类推数组名类型角度数组名代表整个数组的类型例如int[10]类型。数值角度数组名代表数组首元素的地址即a[0]。下标与地址下标表示相对于首元素的偏移量。a[i]的地址 首地址 i × 单个元素字节数。数组越界下标超出[0, 长度-1]范围即为越界。编译器不检查越界需要程序员自己保证下标合法否则可能产生未定义行为。6. 常见练习操作基于10个元素的数组(1) 找出能被3整除的数(2) 键盘输入10个值求累加和int a[10], sum 0; for (int i 0; i 10; i) { scanf(%d, a[i]); sum a[i]; } printf(总和 %d\n, sum);(3) 找出最大值、次大值擂台方法(4) 数组逆序交换对称元素原始1 2 3 4 5 6 7 8 9 10逆序后10 9 8 7 6 5 4 3 2 1交换规律下标i与len-1-i交换只需循环前一半。int len 10; for (int i 0; i len/2; i) { int t a[i]; a[i] a[len-1-i]; a[len-1-i] t; }7. 排序算法选择排序核心思想每次给合适的位置选择合适的数从小到大排序时每次选最小的放到最前面。