C 语言数组练习
这里我们会把前面学习到的一维数组和多维数组进行一次练习。
对于一维数组,我们将计算数组中所有整数的和。
二维数组的例子会稍微复杂一点,我们交换一个有 N x N 个元素二维数组对角元素。
1. 一维数组练习
首先我们会初始化一个数组,然后我们会通过循环语句遍历访问数组中的每一个数值,然后求和。
#include <stdio.h>int main(){short sum = ;short a[] = {, , , , , , , , , };for (int i = ; i < ; i++){sum += a[i]; // 这是一个简写,等价于 sum = sum + a[i];}printf("Array Sum: %d\n", sum);return ;}
运行结果:
Array Sum: 234
2. 多维数组练习
我们先初始化一个有 N x N 个元素的二维矩阵,然后通过嵌套的循环语句,来访问数组中的元素,并且将对行列上的元素进行互换。如同下面表格中的所示。
原始数组
数组索引 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 |
3 | 13 | 14 | 15 | 16 |
变化后数组
数组索引 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | 1 | 5 | 9 | 13 |
1 | 2 | 6 | 10 | 14 |
2 | 3 | 7 | 11 | 15 |
3 | 4 | 8 | 12 | 16 |
请大家注意这个交换是对称的,也就是行列的位置发生了互换。
#include <stdio.h>int main(){short x = ;short a[][] = {{, , , }, {, , , }, {, , , }, {, , , }};printf("原始数组\n");for (int i = ; i < ; i++){for (int j = ; j < ; j++){printf("%d\t", a[i][j]);}printf("\n");}for (int i = ; i < ; i++){for (int j = i; j < ; j++) // 请注意此处是位置交换的关键,我们每次都会缩小交换的范围。{x = a[i][j];a[i][j] = a[j][i];a[j][i] = x;}}printf("交换位置后的数组\n");for (int i = ; i < ; i++){for (int j = ; j < ; j++){printf("%d\t", a[i][j]);}printf("\n");}return ;}
运行结果:
原始数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 交换位置后的数组 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
3. 小结
在这个小结,我们更进一步练习了数组的使用。对于一维数组我们会用到一层的循环语句来遍历里面的所有元素。在多维数组中,要想遍历里面的所有数据,就要使用多层的嵌套循环结构。