一维数组的创建,初始化,使用。
(一)一维数组的创建
数组:一组相同类型元素的集合
定义一维数组的形式:类型符 数组名[常量表达式]
(1)常量表达式用来求数组元素的个数,即数组长度。如a[10],表示该数组中有10个元素,分别为a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。
注意:数组的下标从0开始
(2)常量表达式中可以包括常量和符号常量,不能包含变量。
举例:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h
int main()
{
int n;
scanf("%d", &n);
int a[n];
system("pause");
return 0;
}
(3)数组名的命名规则与变量名相同。
(二)一维数组的初始化
(1)完全初始化
int a1[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int a2[ ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//整型数组
//后面一行的数组初始化,由于给所有元素都赋值了,元素个数已经确定,可以不指定数组长度。这两行代码意义一样。
char b1[3] = { 'a', 'b', 'c' };
char b2[ ] = {' a', 'b', 'c'};
//与上面类似,这两行代码意义一样。
char c1[ ] = { 'a', 'b', 'c','\0' };
char c2[ ] = "abc";
//字符串数组
//这两行代码意义一样 。因为字符串以' \0 '结尾。
//后面一行代码中是连续字符串,默认后面有 ' \0 '.
(2)部分初始化
char a[10] = { 1, 2 };
//给定了数组长度,后面只赋了两个初值,则这两个值赋给前两个元素,
//后面的元素系统自动赋初值,0。
注意:系统自动赋初值时,
数值型数组——初始化为 0
字符型数组——初始化为 ’ \0 ’
指针型数组——初始化为 NULL
(三)如何引用一维数组元素 及 如何使用一维数组
定义好数组并赋初值后,就可以引用数组中的元素。
但是只能引用数组元素而不能一次调用整个数组全部元素的值。
数组名[下标]
数组是使用下标来访问的,且下标从0开始。
数组的大小可以通过计算得到。
代码如下:
int a[10];
int sz = sizeof(a) / sizeof(a[0]);
printf("%d\n", sz);
(1)使用的简单举例:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int t = 0;
int a1[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
t = a1[1];
printf("%d\n", t);
system("pause");
return 0;
}
运行结果如图
(2)举例2
对十个数组元素依此赋值0,1,2,3,4,5,6,7,8,9,要求逆序输出
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10];
int i = 0;
//先给数组元素赋值
for (i = 0; i < 10; i++)
{
a[i] = i;
}
for (i = 9; i >= 0; i--)
{
printf("%d ", a[i]);
}
system("pause");
return 0;
}
运行结果如下:
(3)举例3
用数组处理斐波那契数列
代码如下:
//输出前n个斐波那契数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[20] = { 1, 1 };
int i = 0;
//此处计算后18位数
for (i = 2; i < 20; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
//依此输出20位数
for (i = 0; i < 20; i++)
{
printf("%10d ", a[i]);
}
system("pause");
return 0;
}
运行结果如下: