什么是数组?
如果有100个互不关联的数据,可以分别把它们存放到100个变量中。但是如果这些数据是有内在联系的,是具有相同属性的,就可以把这批数据看作一个整体,称为数组。
所谓数组,就是用一个统一的名字代表这批数据,而用序号或下标来区分各个数据。数组中的数据称为数组元素。
概括的说,数组是有序数据的集合。要寻找一个数组中某一个元素必须给出两个要素,即数组名和下标。数组名和下标唯一地标识一个数组中的一个元素。
数组是有类型属性的,同一数组中的每一个元素都必须属于同一数据类型。
引用数组就不需要在程序中定义大量的变量,大大减少程序中变量的数量,使程序精炼,而且数组含义清楚,使用方便,明确地反映了数据间的联系。熟练地利用数组,可以大大提高编程和解题效率,加强程序的可读性。由于在程序中无法用下角表示下标,因此在计算机高级语言中都用括号来表示下标。C和C++都用方括号来表示下标。
定义和引用一维数组
定义一维数组
定义一维数组的一般形式为
类型名 数组名[常量表达式]
例如:int a[10];表示组名为a,此数组为整型,有10个元素。
需要注意的是
1、数组名命名规则和变量名相同,遵循标识符定名规则。
2、用方括号括起来的常量表达式表示下标值。
3、常量表达式的值表示元素的个数,即数组长度。
4、常量表达式中可以包含常量、常变量和符号常量,但不能包含变量。也就是说,不允许对数组的大小作动态定义。
引用一维数组的元素
数组必须先定义,然后使用,只能逐个引用数组元素的值,而不能一次引用整个数组中的全部元素的值。
数组元素的表示形式为
数组名[下标]
下标可以是整型常量或整型表达式。
如:定义一个整型数组a,把0-9共10个整数赋给数组元素a[0]-a[9],然后按a[9],a[8]···,a[0]的顺序输出。
#include <iostream>
using namespace std;
int main()
{
int a[10];
for (int i = 0; i <= 9; i++) //下标中的数字不能大于数组的长度
a[i] = i;
for (int j = 9; j >= 0; j--)
cout << a[j]<<" ";
cout<< endl;
return 0;
}
//结果为:9 8 7 6 5 4 3 2 1 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、在对全部元素赋初值时,可以不指定数组长度。
如:int a[5]={0,1,2,3,4};可以写成int a[]={0,1,2,3,4};系统会据此自动定义a数组的长度为5,但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。
如:用数组来求斐波那契数列问题。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int i;
int fibonacci[30] = { 1,1 };
for (i = 2; i < 30; i++)
{
fibonacci[i] = fibonacci[i - 2] + fibonacci[i - 1];
}
for (i = 0; i < 30; i++)
{
if (i % 10 == 0)
cout << endl;
cout <<setw(8)<<setiosflags(ios::left)<< fibonacci[i];
}
return 0;
}
结果如下:
实例
编写程序,用气泡法对10个数排序。(由小到大)
#include <iostream>
using namespace std;
int main()
{
int a[10];
int i, j, temp;
cout << "请输入10个数字:";
for (i = 0; i <= 9; i++)
cin >> a[i];
cout << endl;
for (j = 1; j <= 9; j++)
for(i=0;i<=9-j;i++)
if (a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i+1] = temp;
}
cout << "排序后的数字为:";
for (i = 0; i <= 9; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
结果如下: