一维数组
单个变量可以解决一些问题,但是遇到像计算所有员工的工作总量求和,一个一个定义变量是行不通的。所以C++提供了数组。今天学习的是一维数组。
一维数组的定义如下:
数据类型 数组名 [常量表达式] |
---|
数据类型就是数组的数据类型,数组名是自定义的名字,常量表达式的值是一个整数,用来限定数组中元素的个数。
例如:
int a[5]; |
定义了一个整型数组,含有5个数组元素。表示为:“数组名[下标]”,下标从0开始,以次递增到下标。a[5]有5个元素,分别是:а[1]、а[2]、а[3]、а[4]、а[5]。这个下标取值范围在0–4之间,5不取。如果你写a[5] = 3;,那就是下标越界,是错误的。
C++定义数组时还可以同时对数组元素赋值,格式:
数据类型 数组名[常量表达式] = {第一个值, 第二个值, ······ 第n个值}; |
---|
例如:
int a[5] = {1, 2, 3, 4, 5}; |
还可以:
int b[10] = {1, 2, 3, 4, 5}; |
注意:
只对b的前5个元素赋了值,C++系统会把其他的元素赋值为0。
二维数组
二维数组是一个平面,比如下面的数阵:
7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 |
一维数组是一条线:
1 2 3 4 5 6 7 |
二维数组的定义如下:
数据类型 数组名[常量表达式1][常量表达式2]; |
---|
例如:
int a[3][4]; |
二维数组的下标第一个叫行下标,第二个叫列下标。顾名思义,行下标就是行的个数,列下标就是列的个数。下标范围都是从0开始从下标结束的。
二维数组也可以在定义的同时进行赋值,如:
int a[3][4] = {{1, 2, 3, 4},{1, 2, 3, 4},{1, 2, 3, 4}}; |
上一行代码的数组代表下面的数阵:
1 2 3 4 1 2 3 4 1 2 3 4 |
做一次交换游戏,变成:
1 1 1 2 2 2 3 3 3 4 4 4 |
请看以下代码:
#include <iostream> using namespace std; int main() { int a[3][4], b[4][3]; int i, j; a[3][4] = {{1, 2, 3, 4},{1, 2, 3, 4},{1, 2, 3, 4}}; for(i = 0; i < 3; i ++) // 交换 { for(j = 0; j < 4; j ++) b[j][i] = a[i][j]; } for(j = 0; j < 4; j ++) // 输出 { for(i = 0; i < 4; i ++) cout << b[j][i] << "\t"; cout << endl; } return 0; } |
这段代码最主要的是b[j][i] = a[i][j],关键操作是交换下标变量的行下标列下标。