定义和引用一维数组
- 数组是一组有序数据的集合
- 用一个数组名和下标来唯一确定数组中的元素
- 数组中的每一个元素都属于同一个数据类型
定义一维数组的一般形式:
类型说明符 数组名[常量表达式];
int a[10];
表示a数组有10个元素 a[0]-a[9],下标从0开始;
在定义数组并对其中各元素赋值后,就可以引用数组中的元素
只能引用数组元素而不能一次整体调用整个数组全部元素的值
引用数组元素的表达形式:
数组名[下标]
eg:t=a[6];
eg:对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出
#include <stdio.h>
int main() {
int i, a[10];
for (i = 0; i <= 9; i++)
{
a[i] = i;
}
for (i=9; i >= 0; i--)
printf("%d ", a[i]);
printf("\n");
return 0;
}
一维数组的初始化
为使程序简洁,常在定义数组的同时给各数组元素赋值,这称为数组的初始化
(1)在定义数组时对全部数组元素赋予初值
int a[10]={0,1,2,3,4,5,6,7,8,9};
(2)给一部分元素赋值
int a[10]={0,1,2,3,4};//系统自动给后五个赋值0
(3)使一个数组全部元素为0;
用(1)或
int a[10]={0};
(4)在对全部数组元素赋初值时,由于数据的个数已经确定,可不指定数组长度
int []={1,2,3,4,5};
一维数组举例:求Fibonacci数列的前20个数。数列特点:第1,2两个数为1,1;从第三个数开始,该数是前两个数的和即1,1,2,3,5,8...
#include <stdio.h>
int main() {
int i;
int f[20] = { 1,1 };
for (i = 2; i <= 19; i++)
{
f[i] = f[i - 2] + f[i - 1];
}
for (i = 0; i <= 19; i++)
{
if (i % 5 == 0)
printf("\n");
printf("%12d", f[i]);
}
return 0;
}
怎么定义和引用二维数组
二维数组常称为矩阵
定义二维数组
类型说明符 数组名[常量表达式][常量表达式];
eg://定义a为3*4的数组,b为5*10的数组
float a[3][4] b[5][10];
//定义三维数组:
float a[1][3][4];//两页,3行,4列
二维数组的初始化
(1)分行给二维数组赋初值
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2)可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3)对部分元素赋初值
int a[3][4]={{1},{5},{9}};
(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维数组的长度不能省
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
eg:将一个二维数组的行和列的元素互换
#include <stdio.h>
int main() {
int a[2][3] = { {1,2,3},{4,5,6} };
int b[3][2], i, j;
printf("array a:\n");
for (i = 0; i <= 1; i++)
{
for (j = 0; j <= 2; j++)
{
printf("%5d", a[i][j]);
b[j][i] = a[i][j];
}
printf("\n");
}
printf("array b:\n");
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 1; j++)
{
printf("%5d", b[i][j]);
}
printf("\n");
}
return 0;
}