文档介绍:第 6 章数组
一维数组的定义
一维数组元素的引用
一维数组的初始化
二维数组的定义
二维数组的引用
二维数组的初始化
字符数组
第 6 章数组
一维数组的定义
语句形式:
类型说明符数组名[常量表达式]
说明:
数组名定名规则和变量名相同。
常量表达式表示数组元素的个数,即数组的长度。
如:
int a[10];
表示a数组有10个元素:a[0],a[1],a[2],, a[9],没
有a[10]。
注意:数组的下标是从 0 开始的。
C不允许对数组进行动态定义。以下作法是错误的。
int n;
scanf(“%d”,&n);
int a[n];
一维数组元素的引用
数组必须先定义,然后再使用。C的数组元素只能
逐个引用而不能一次引用整个数组。
一维数组元素的表示形式为:
数组名[下标]
下标可以是整型常量或整型表达式。
main( )
{ int i,a[10];
for (i=0; i<=9; i++)
a[i]=i+1;
for (i=9; i>=0; i--)
printf(“%2d”,a[ i]);
}
输出结果:
10 9 8 7 6 5 4 3 2 1
一维数组的初始化
赋值语句和输入语句均可使数组中的元素赋初值,但占用运
行时间。简捷的方法是在程序运行之前使数组初始化。
对数组元素初始化的方法有:
1. 在定义数组时对数组元素赋以初值
如:
static int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
说明:
依次赋予数组元素的初值必须用{ } 括起来。
“static”是C的一个关键字,意为“静态存储”。C规定只有
静态存储(static)数组和外部存储(extern)数组才能初始化。
2. 可以只给一部分元素赋值
如:
static int a[10] = { 0, 1, 2, 3, 4 };
3. 在C中系统会自动对所定义的静态数组的每个元素赋初值0
4. 对全部数组元素赋初值时,可以不指定数组长度
如:
static int a[5] = { 1, 2, 3, 4, 5 };
可以写成:
static int a[ ] = { 1, 2, 3, 4, 5 };
main( )
{ int i, k, r, x, b[16];
printf(“Enter an integer x :”); scanf(“%d”,&x);
printf(“%6d binary number is :\n”,x);
k = -1;
do
{ r = x%2; b[++k]= r ; x/=2; }
while (x != 0);
for ( i=k; i>=0; i--)
printf(“%1d”,b[i]);
printf(“\n”);
}
将一个十进制整数转换成二进制数。
用冒泡法将 10 个数按从小到大排序。
冒泡法的思路是:将相邻两个数进行比较,将小的调到前头。
若有这样一组数:9 8 4 5 2 0,则按如下图所示进行操作。
9 8 4 5 2 0
比较
交换
9
8
比较
交换
9
4
比较与交换的操作直到数字 9 调到最后的位置,然后将剩下
的 5个数 8 4 5 2 0 进行下一轮比较与交换,直至排好序为止。
当有n个数时需要作n–1
趟这样的搜索, 每趟搜索
要作n–1次比较。
main( )
{ int i, j,t,a[11];
printf(“input 10 numbers :\n”);
for (i=1; i<11; i++) scanf(“%d”,&a[i]);
printf(“\n”);
for ( j=1; j<=9; j++)
for ( i=1; i<=10-j; i++)
if (a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]= t; }
printf(“the sorted numbers :\n”);
for (i=1; i<11; i++) printf(“%d”,a[i]);
}
二维数组的定义
定义形式:
类型说明符数组名[常量表达式1] [常量表达式2]
如: float a[3][4];
定义a是一个3x4 (3行4列)的数组,即a数组有12个元素。
但不得写成:float a[3,4];
注意:
C允许定义多维数组。
二维数组中元素的排列顺序为按行按列。即存放完第