文档介绍:第6章数组
苏小红******@hit.
C语言大学实用教程
1
内容提要
数组类型;
向函数传递一维数组和二维数组;
常用算法:排序、查找、求最大最小值等;
用字符数组存取字符串;
使用字符串处理函数处理字符串
数组的用处
保存大量同类型的相关数据
如矩阵运算,表格数据等
数组(Array)
int a[10];
定义一个有10个元素的数组,每个元素的类型均为int
使用a[0]、a[1]、a[2]、……、a[9]这样的形式访问每个元素。它们与普通变量没有任何区别
系统会在内存分配连续的10个int空间给此数组
数组下标可以是整型表达式
直接对a的访问,就是访问此数组的首地址
a
数组首地址
a[9]
a[8]
a[7]
a[1]
a[0]
…
数组的定义与初始化
数组定义后的初值仍然是随机数,一般需要我们来初始化
int a[5] = { 12, 34, 56 ,78 ,9 };
int a[5] = { 0 };
int a[] = { 11, 22, 33, 44, 55 };
数组大小最好用宏来定义,以适应未来可能的变化
#define SIZE 10int a[SIZE];
数组大小定义好后,将永远不变
数组的使用
数组的下标都是从0开始
对数组每个元素的使用与普通变量无异
可以用任意表达式作为下标,动态决定访问哪个元素
for (i=0; i<SIZE; i++) a[i] = 2 * i;
下标越界是大忌!
使用大于最大下标的下标,将访问数组以外的空间。那里的数据是未知的,可能带来严重后果
sizeof可以用来获得数组大小
数组的特点
快速地随机访问
一旦定义,不能改变大小
只能逐个对数组元素进行操作(字符数组例外)
输入方法:
int a[10],i;
输入第i个数组元素:
scanf("%d",&a[i]);
输入整个数组元素:
for (i=0;i<10;i++)
scanf("%d",&a[i]);
输出方法:
输出第i个数组元素:
printf("%d",a[i]);
输出整个数组元素:
for (i=0;i<10;i++)
printf("%d",a[i]);
一维数组的输入和输出
兔子生崽问题
i数列
1,2,3,5,8,13,21,34,55,89,144,233,…
#include <>
#define YEAR_MONTH 12
main()
{
int f[YEAR_MONTH+1] = {0,1,2};
int month;
for (month=3; month<=YEAR_MONTH; month++)
{
f[month] = f[month-1] + f[month-2];
}
for (month=1; month<=YEAR_MONTH; month++)
{
printf("%d\t", f[month]);
}
printf("\nsum = %d\n", f[YEAR_MONTH]);
}