了解数组
数组(Array)是有序的元素序列。 具有同名的同属性的数据就组成一个数组,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
例:一个班有30个学生,每个学生有一个成绩,要求这30个学生的平均成绩。这些数据是同一个班级、同一门课程的成绩,它们具有相同属性。它们都是同一类型的数据(都代表一个班中学生的成绩),就可以用同一个名字如(s)来代表它们,而在名字的右下角加上一个数字来表示这是第几名学生的成绩。
(1)数组是一组有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号。
(2)用一个数组名和下标来唯一地确定数组中的元素。如s1表示第1个学生的成绩。
(3)数组中的每一个元素都属于同一个数据类型。不能把不同类型的数据(如学生的成绩和学生的性别)放在同一个数组中。
一维数组
一维数组是数组中最简单的,它的元素只需要用数组名加一个下标,就能唯一的确定。
- 一维数组的一般形式为:
类型说明符 数组名 [ 常量表达式 ] 如int a[10]
注意 :
(1)数组名的命名规则和变量名相同,遵循标识符命名规则。
(2)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组的长度。例如指定a[10]
,表示a数组有10个元素,但是下标是从0开始的,这10个元素是a[0],a[1],……,a[9]
。
(3)常量表达式中可以包括常量和符号常量,如int a[3+5]
是合法的,不能包含变量,如int a[n]
是不合法的。
如何引用一维数组
其表现形式为:
数组名 [ 下标 ]
例:对 10个数组元素依次赋值为0,1,2,3,……,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]);
}
return 0;
}
一维数组的初始化
为了使程序简洁,常在定义数组的同时给个数组元素赋值,这称为数组的初始化。
(1)在定义数组时对全部数组元素赋予初值。将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔。花括号内的数据就称“初始化列表”。例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
(2)可以只给数组中的一部分元素赋值。定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,系统自动给后面5个元素赋初值为0。例如:
int a[10]={0,1,2,3,4};
(3)如果想使一个数组中全部元素为0,可以写成:int a[10]={0,0,0,0,0,0,0,0,0,0};
或者int a[10]={0}; //未赋值的部分元素自动设定为0
(4)在对全部数组元素赋予初值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:
int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5};
在第二种写法中,花括号中有5个数,虽然没有在花括号中指定数组的长度,但是系统会根据花括号中的个数来确定a数组中有5个元素。但是如果数组长度与提供初值的个数相同,则方括号中的数组长度不能省略。
一维数组程序举例
用数组来求Fibonnacci(斐波那契)数列问题。
#include <stdio.h>
int main(){
int i;
int f[20]={1,1};
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("%12d",f[i]);//%md m是指定的输出字段的宽度。
//如果数据的位数小于m ,则左端补空格,
//若大于m,则按照实际位数输出
}
return 0;
}