一维数组、选择排序
2026/7/22 3:30:51 网站建设 项目流程

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

  • 交换规律:下标ilen-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. 排序算法(选择排序)

核心思想

  • 每次给合适的位置选择合适的数(从小到大排序时,每次选最小的放到最前面)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询