数组
数组
数组是一组有序数据的集合;由数据名和下标组成;数组中的每一个元素都属于同一数据类型。
一维数组
定义一维数组
类型说明 数组名[常量表达式]
例:int a[20];
引用一维数组
数组名[下标]
例:a[10]
一维数组初始化
- 全部数组元素赋值
int a[5] = {0,1,2,3,4};
或写成
int a[] = {0,1,2,3,4}; - 部分赋值
int a[5] = {0,1,2};
给前三个数组元素赋值0,1,2,后两个数组元素默认赋值为0。
数值型数组默认赋值为0,字符型数组默认赋值为NULL。
一维数组举例
例6.1 逆序输出
对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
#include<stdio.h>
int main()
{
int i, a[10]; //数组的下标是从0开始的,int a[10]的元素为:a[0],a[1],……,a[9]用10个元素
for(i=0; i<=9; i++)
a[i] = i;
for(i=9; i>=0; i--)
printf("%d ", a[i]);
printf("\n");
return 0;
}
例6.2斐波那契数列
用数组来处理斐波那契数列问题。
#include<stdio.h>
int main()
{
int i;
int f[20] = {
1, 1}; //数组前两个元素值为1,其他元素的值为0
for(i=2; i<20; i++) //斐波那契数列赋值
f[i] = f[i-2]+f[i-1];
for(i=0; i<20; i++) //输出数列
{
if(i%5 == 0)
printf("\n");
printf("%5d ", f[i]);
}
printf("\n");
return 0;
}
例6.3 排序(冒泡法)
有10个地区的面积,要求对它们按由小到大的顺序排列。
#include<stdio.h>
int main()
{
int a[10];
int i, j, t;
printf("输入10个整数:\n");
for(i=0; i<10; i++)
scanf("%d", &a[i]);
printf("\n");
//将最大的数放到数组的最后一个元素上
for(j=0; j<9; j++)
for(i=0; i<9-j; i++) //参与循环的元素越来越少
if(a[i] > a[i