1、介绍数组
一个常量变量就是一个用来存储数值的命名区域。同样,一个数组就是一个用来存储一系列变量值的命名区域,因此,可以使用数组组织常量变量。也就是说,数组是一组有序数据的集合,存储在数组中的值称为数组元素。每个数组元素有一个相关的索引(也称为关键字),它可以用来访问元素。在大多数编程语言中,数组都具有数字索引,而且这些索个通常是从0或1开始的。数组中的每个元素都属于同一个数据类型。
一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。
2、一维数组
当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。通过给出的数组名称和这个元素在数组中的位置编号(即下标),程序可以引用数组中的任意一个元素,一维数组的引用定义格式为:类型+数组名[下标]如:int a[10]
其中,a是一维数组的数组名,该数组有10个元素,依次表示为a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]。需要注意的是,数组是从零开始是,所以a[10]不属于这一个数组的空间范围中。当在说明部分定义了一个数组变量后,编译程序会在内存空间中开辟一串连续的存储单元。对于数组而言,程序的执行部分使用的是数组变量而不是数组类型。在引用时,下标必须是整数,但可以是整型变量或整型表达式。如果使用表达式,会先计算表达式以确定下标。程序只能逐个应用数组中的元素而不能一次引用整个数组,再定义数组时,需要指定数组中元素的个数,方括号里边的常量数值表示了数组的长度。在数组定义前加const关键字可将整个数组变为只读,将不再可以对数组进行写入数据。
如: int a; float a[10]; (非法) int n=5; int a[n];(非法) int a[5+6]; (合法的)
初始化:(注意,在使用数组之前,一定要先初始化)
1、数组的初始化可以在定义时一并完成
2、可以只给部分元素赋初值,其他的元素赋0。
3、如给全部元素赋值,则在数组中说明,可以不给出数组元素的个数
4、数组的初始化可以是用循环进行输入数值赋值,也可以是在程序中指定赋值
例子:
#include<stdio.h>//寻找数字并查看在哪个位置
int search(int n, int a[], int max);
int main(void)
{ int a[] = {1,6,5,7,4,3,2,8,11,9,10};//初始化一
/* int a[10] = {0}//初始化二 全都初始化为零
for (i = 0; i < 10; i++) {//初始化三自己输入初始化(这种初始化最好定义在二之上,否则其他如果有元素没有被赋值的话会出错)
scanf("%d", &a[i]);
}
*/ int n; scanf("%d", &n);
//整个数组占用的字节数可用sizeof(a)表示出来
int h = search(n, a, sizeof(a) / sizeof(a[0]));//用整个数组占用的字节数除以首元素的字节数可知道数组的大小
if (h != -1) {
printf("%d在第%d位上", n, h+1);
}else { printf("没有这个数字");
}
return 0;
}
int search(int n, int a[], int max) {
int t = -1;
int i;
for (i = 0; i < max; i++) {//遍历数组
if (n == a