C语言数组
C语言数字数组
一维数组
常用定义和初始化
1 |
|
1 | int s[10]={1,2,3,4,5,6,8,9,66,99} |
常用的为循环输入
1 | int s[10]; |
输出为printf
1 | for(i=0;i<n;i++) |
冒泡排序
重要排序算法
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,比较每一对相邻的元素,如果它们的顺序错误就交换它们。这个过程被重复进行直到没有需要交换的元素为止,列表因此变得有序。
任务描述
本关任务:将十个数进行从大到小的顺序进行排列。
测试说明
样例输入: 1 2 3 4 5 6 7 8 9 10
样例输出: 10 9 8 7 6 5 4 3 2 1
1 |
|
这段代码的目标是将数组 s
按降序排序。让我们逐行解析这段代码:
1 | for(i = 0; i < 10 - 1; i++) |
这个外层 for
循环控制整个冒泡排序过程需要执行的轮数。由于每一轮最大的元素都会被移到最后,我们实际上只需要执行 n-1
轮(这里 n
是数组的长度)。因此,循环的范围是 0
到 8
(共 9 次)。
1 | for(j = 0; j < 10 - 1 - i; j++) |
内层 for
循环用于控制每轮遍历。每一轮都需要比较并可能交换相邻的元素对。注意,循环的上限是 10 - 1 - i
,这是因为随着每一轮的进行,已经排序好的元素会逐渐“冒泡”到数组的末尾,这部分元素不需要再比较。
1 | if(s[j] < s[j + 1]) |
这里的 if
语句检查当前元素 s[j]
是否小于下一个元素 s[j + 1]
。如果是,则需要交换它们以确保更大的元素在前(实现降序排序)。
1 | temp = s[j]; |
这三行代码实现了元素交换:
- 把
s[j]
的值存到临时变量temp
中。 - 把
s[j + 1]
的值赋给s[j]
。 - 把
temp
中的原s[j]
值赋给s[j + 1]
。
通过上述步骤,这对元素被交换,较大的元素移动到了前面。
代码整体流程
- 初始化外层循环:
i
从0
开始递增到8
。 - 内层循环:每次遍历数组的前
10 - 1 - i
个元素,对每对相邻元素进行比较和交换。 - 元素交换:如果前一个元素小于后一个元素,就交换它们,使较大的元素移到前面。
- 重复上述过程:直到所有元素都被正确排序为止。
最终,经过 n-1
轮比较和交换,数组 s
将按降序排序。
二维数组
二维数组是数组的一种扩展形式,可以用来表示矩阵、表格或其他网格状的数据结构。在C语言中,二维数组是一个数组的数组,这意味着它是一个包含多个一维数组的数组。
定义和初始化二维数组
在C语言中,可以这样定义和初始化一个二维数组:
1 | int array[3][4]; // 定义一个3行4列的二维数组 |
这段代码定义了一个包含3个一维数组的数组,每个一维数组包含4个整数元素。
可以在定义时进行初始化:
1 | int array[3][4] = { |
这将数组初始化为如下形式:
1 | 1 2 3 4 |
访问二维数组元素
可以使用下标访问二维数组中的元素:
1 | int value = array[1][2]; // 访问第二行第三列的元素,值为7 |
遍历二维数组
可以使用嵌套的循环遍历二维数组:
1 | for (int i = 0; i < 3; i++) { |
这段代码将打印二维数组的所有元素,每行一个。
应用二维数组的示例程序
让我们看一个简单的示例程序,它读取一个二维数组的输入并打印出来:
1 |
|
总结
- 定义:使用
type array[rows][cols]
定义二维数组,其中type
是数据类型,rows
是行数,cols
是列数。 - 初始化:可以在定义时对数组进行初始化,使用大括号
{}
分别包围每一行的数据。 - 访问:使用
array[i][j]
访问第i
行第j
列的元素。 - 遍历:使用嵌套的
for
循环遍历数组的所有元素。
二维数组在存储和处理矩阵、表格数据时非常有用,在科学计算、图像处理和游戏开发中广泛应用,如五子棋,贪吃蛇等。
任务描述
题目描述:按如下函数原型编程从键盘输入一个m
行n
列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中m
和n
的值由用户键盘输入。已知m
和n
的值都不超过10
。
1 |
|
代码说明:
- 读取数组的维度:
- 程序首先提示用户输入二维数组的行数和列数,并将其存储在
rows
和cols
变量中。
- 程序首先提示用户输入二维数组的行数和列数,并将其存储在
- 读取数组的元素:
- 程序创建一个具有
rows
行和cols
列的二维数组array
。 - 使用嵌套的
for
循环遍历每个数组元素,并提示用户输入这些元素的值。
- 程序创建一个具有
- 查找最大值:
- 初始化
max_value
为数组的第一个元素array[0][0]
。 - 再次使用嵌套的
for
循环遍历每个数组元素,如果发现某个元素大于当前的max_value
,则更新max_value
。
- 初始化
- 打印最大值:
- 最后,程序打印出找到的最大值。
使用示例:
假设输入如下:
1 | Enter the number of rows: 3 |
程序的输出将是:
1 | The maximum value in the array is: 9 |