C语言中的数组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据类型
数组名[长度];
长度是指一维数组 的存储变量的个数
数组的类型为整型,表明这 个数组中的元素都是整型
int
a[100];
数组名为a, 长度为100
数组的初始化是用来实现对数组的每个元素赋初值 的。虽然有的编译器会自动对数组赋初值,但为了 安全起见,建议用户自己对数组赋初值。
花括号开始 花括号结束
a[1] 0 1 2 3
1 3 1 6 4 1 10 10 5 ...
通过分析杨辉三角行和列的值分析如下: 通过分析杨辉三角行和列的值分析如下: 实现代码分析 第一列的值都为1 a[i][0]=1 for(i=0;i<n;i++) a[i][0]=1;
实现代码分析 对角线的值为1 当i=j时,a[i][j]=1
一维数组实现代码 #include <stdio.h> int mian() {
使用数组后
score[400];
return 0; }
一维数组是长度固定的数组,其存储空间是一片连 续的区域。本节将讲解一维数组的概念及其应用。
声明数组是告诉编译器,数组名所使用的标识符。 数组的定义是令系统为该数组分配内存空间。在C 语言中,数组的声明和定义是同时进行的。
数据类型
数组名[长度]={数值1,数值2,...数值n};
为数组中的每个元素赋值,每 个元素数值要用“,”隔开
int
a[10] = {1,2,3,4,5,6,7,8,9,10};
int a[10]; 一维数组的下标 是从0开始的 int a[0]=1; int a[2]=2; ... int a[9]=10;
先声明并定义了一个长 度为10的整型数组a[10] 再对数组中每个元素初 始化
注意点
示例代码
若对数组中的所有元素都赋予了初始值,可以不用指定数组的大 int x[]={1,2,3,4,5}; 小,系统将自动根据赋值的个数来确定数组的大小 若只对数组中的部分元素赋予初始值,则系统会自动为其他元素 int x[10]={1,2,3,4,5}; 赋初始值0 若只声明数组,而不为数组赋值,则数组中的元素值是不确定的 int x[10]; 下面的代码是不合法的: int i=100; int a[i];
说明 如图5.2的输出结果可以看出 printf(“%s”,c); //其中数组名为c
3
char c[10]={“China”} //字符串的长度为5 printf(“%s”,c); //也只输出字符串“China”, 而不是输出10个字符
因为字符’\0’是字符串的结束标志 scanf(“%s”,c);
for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i==j) a[i][j]=1; }
对角线右侧的值
当i<j时,a[i][j]=0
实现代码分析 最终杨辉三角也是只输出非 0值,所以这一块可以直接 省略,不用考虑
对角线左侧的值
当i>j时,a[i][j]=a[i-1][j-1]+a[i-1][j]
数组 按照数据类型不同分类 按照数据多少
分类 整型数组、字符型数组、指针数组等 一维数组、二维数组、多维数组
前面章节中讲解的C语言的基本数据类型只能处理 一些简单的数据类型,如果遇到复杂的具有相同类 型的多个数据那么就很难解决。幸好,C语言提供 了数组来解决了这一个问题。
基本数据类型实现代码 #include <stdio.h> int mian() { float 张三score; float 李四score; float 王五score; float 孙六score; ... ... ... 省去一万字 ... „ return 0; }
杨辉三角的输出结果 i*j矩阵 图形属于一个二维平 面,所以采用二维数 组实现 ... 0 0 1 3 ... 1 0 0 0 0 0 0 1 0 a[j-1]
a[0] 1 1 1 1 1 1 1 2 3 4 5 杨辉三角的行 列分析转换 a[0] a[1] a[2] a[2] ... a[i-1] 1 1 1 1
二维数组指有两个下标的数组。C语言中,对于常 用的数组除了有一维数组还有二维数组。本节来学 习二维数组。
二维数组有两个下标。二维数组中的元素和一维数 组中的元素一样,具有同样的数据类型。
二维数组由长度为长 度1的一维数组组成
数据类型
数组名[长度1][长度2];
二维数组由长度为长度1个的一维数组 组成,每个一维数组的长度为长度2
对二维数组进行引用时下标超出了 数组定义时的上界,引用不合法
a[2][3]=7; ... return 0; }
这是合法的引用
字符数组就是用来存放字符的。在计算机中经常会 处理字符,C语言对字符的处理主要是通过字符数 组实现的。在本节中将会讲述字符数组的概念及其 应用。
字符数组的含义如图5.17所示。
数组是相同类型数据的集合。它们都拥有同一个名 称。在大数量处理处理和字符串操作时,广泛使用 数组。数组对C语言来说起着相当至关重要的作用。 本章将重点讲数组的各种操作。
在程序设计的过程中,经常会处理一些数据类型相 同的变量,为了方便,C语言中提供了数组这一结 构。
含义
数组
把同一类型的数据有序进行排列,进行统一 存储,是同种类型数据的集合。
字符数组名[长度];
char
字符数组名[下标1][下标2];
一维字符数组的初始化方式一般有两种,如表5-4所 示。
初始化方式 逐个为字符数组赋值 示例代码 char c[6]={ 'H', 'e', 'l', 'l', 'o'}; 说明 每个字符会依次赋值给数组中的每个元素 直接将字符串赋给字符数组来初始化。系统会依次 读取字符串中的每个字符,赋值给数组每个元素, 并在字符串的的结尾处加一个字符即结束符\0作为 一个数组元素。 char c[6]={"Hello"}; 等价于char c[6]= "Hello"; 等价于char c[]={"Hello"};
字符数组的输入输出有两种方法,如图5.23所示。
两种方式 字符数组的输入输出
逐个字符的输入和输出,用格式符“%c”输入输出一个字符
将整个字符串一次输入输出,用格式符“%s”格式输入输出字符串
注意点 1 2
注意事项 输出字符不包括结束字符’\0’ 用“%s”格式输出时,printf()函数的输出项 是字符数组名,而不是字符元素 如果数组长度大于字符串的实际长度,也只是 输出遇到结束字符结束输出 如果一个字符数组由多个’\0’,则遇到第一个 ’\0’就结束输出 可以用scanf函数输入一个字符串
1 1 1 1 1 1 1 1 2 2 1 1 1 1 3 3 3 3 1 1 对角线左侧的值 a[i][j]=a[i-1][j-1]+a[i-1][j] 1 1 4 4 6 6 4 4 1 10 1 1 5 5 10 10 10 10 5 5 ... ...
第一列的值都为1
对角线为1
对角线右侧的值为0
二维数组的引用形式如图5.13所示。
数组名
[下标1][下标2]
int a[2][3]={{0,1,2},{4,5,6}} {0,1,2} {4,5,6} a[0] a[1] 1 4 2 5 3 6
#include <stdio.h> int main() { int a[3][4]; ... a[3][4]=3;
对于二维数组的初始化有好多种方法,如表5-3所示。
二维数组初始化方法 分行给二维数组赋初值 可以将所有数据写在一个花括号内,按照数组 排列的顺序对各元素赋初值 可以对部分元素赋初值,而在每行的其他元素 的值为0或者为’\0’ 如果对数组的全部元素赋初值,则定义二维数 组时可以不指明下标1,但是必须明确指明下 标2的长度 示例代码 int a[2][3]={{0,1,2},{4,5,6}} int a[2][3]={0,1,2,4,5,6} int a[2][3]={{1},{4}}等价于int a[2][3]={{1,0,0},{4,0,0}} int a[2][3]={0,1,2,4,5,6}等价于int a[ ][3]={0,1,2,4,5,6}
C语言数组的大小只能是常量,而不能使用变量
在C语言中,一维数组的引用其实就是对一维数组 元素的使用。一维数组的引用形式以及相关举例如 图5.8所示。
数组名[下标] 例如 int a[i] a[i] int
一维数组引 用的形式
数组名为a,长度为n。数组的下标的 下界是0,上界是n-1,0<=i<n
int
wenku.baidu.com
a[3][4];
等价于3个长度都为 4的一维数组
int int int
a0[4]; a1[4]; a2[4];
二维数组由多个一维数组组成 a[0] a[1] a[2] a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
用字符串直接给字符数组赋值
char c[6]={"Hello"};
char c[2][6]={ "Hello","World"};
注意说明
采用字符串给二维数组赋值的时候, 二维数组的最后一个字符是\0结束字符, 每一个元素的长度是字符串的长度加1
前面已经讲解过了一维数组与二维数组的引用,所 以字符数组的引用大家应该已经有一个概念了。C 语言中,可以引用字符数组中的一个元素,得到一 个字符。这一小节通过两个简单的示例讲解一维字 符数组和二维字符数组的引用。
4 5
通过输出杨辉三角图来进一步讲解数组的应用。
杨辉三角的图形界面如图5.25所示。
1 1 1 1 1 1
1 2 3 4 5
1 3 1 6 4 1 10 10 5 ...
其实质是二项式(a+b)的n次方展开后各项的系数排 成的三角形,它的特点是左右两边全是1,从第二 行起,中间的每一个数是上一行里相邻两个数之和。 具体对于杨辉三角程序分析思路如图5.26所示。
字符数组
含义
字符数组是用来存放字符类型的数据。 字符数组的每个元素存放的都是一个字符。
概念 结束标志
在C语言中,由若干字符组成的序列称为字符串 字符串一般以’\0’作为结束标志
存储形式
字符串不能用一个变量存放,必须用字符数组来存放
'h'
‘e’
‘l ’
‘l ’
‘o’
\0
字符串的开端
字符串的结束
char