第6章C语言数组_第1页
第6章C语言数组_第2页
第6章C语言数组_第3页
第6章C语言数组_第4页
第6章C语言数组_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 数组本章要求1. 一维数组和多维数组的定义,初始化和引用 .2. 字符串与字符数组数组一维数组二维数组字符数组字符串引言: 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在语言中,数组属于构造数据类型。一. 一维数组的定义定义: 数组是有序数据(必须是相同的数据类型结构)的集合.格式: 类型说明符 数组名常量表达式例如: int a10 ; 表示数组名为a,有10个元素,并且每个元素的类型都是int型的.float b10,c5; 说明实型数组b有10个元素,实型数组有5个元素; 注意: 1. 数组名的命名规则和标示

2、符的命名规则相同。2.常量表达式要有方括号括起来,不能用圆括号,int a(10); 这是非法的!3.常量表达式表示数组元素的个数,即数组长度.并且数组的第一个元素是从下标0开始的!4.常量表达式可以是常量也可以是符号常量,不能包含变量。C语言绝对不允许对数组的大小作动态定义; 例如:下面是非法的 int n; scanf(“%d”,&n); int an;5.数组的类型实际上就是指数组元素的取值类型,对于同一数组,它所有元素的数据类型都是相同的;6.数组名不能与其他变量名相同;例如: main() int a; float a10; . 是非法的!7.允许在同一个类型说明中,说明多个数组和多

3、个变量; 例如: int a,b,c,d10,e5;二. 一维数组元素的初始化 有下列方法初始化: 1)在定义数组时,对数组元素赋初值; 例如: int a10=0,1,2,3,4,5,6,7,8,9; 上面的语句等价于 a0=0,a1=1, 2)可以只给一部分元素赋初值,例如: int a10=0,1,2,3,4; 表示只给数组的前5个元素赋初值,后5 个元素的值,系统自动默认为0 3)在对全部数组元素赋初值时,可以不指定数组长度;例如: int a5=0,1,2,3,4; 可以改写为: int a=0,1,2,3,4; 但是,int a10 =0,1,2,3,4;不能改写为: int a=

4、0,1,2,3,4;三. 一维数组的引用 数组必须先定义,后使用!C语言规定: 只能逐个引用数组元素,而不能一次引用整个数组!数组的引用形式为: 数组名下标 其中,下标可以是整型常量也可以是整型表达式. 例如: a0=a5+a7+a2*3四. 一维数组的程序举例1.读10个数存入数组中,输出数组中的所有数据. main() int i,a10; for(i=0;i=9;i+) ai=i; /*顺序给数组元素赋初*/ for(i=0;i=9;i+) printf(“%d”,ai); /*顺序输出数组元素*/2.读10个整数存入数组中,输出平均值.#include #define size 10

5、main() int xsize,i; float s=0,ave; for(i=0;isize;i+) scanf(“%d”,&xi);for(i=0;isize;i+) s+=xi;ave=s/size;printf(“%dn”,ave);五. 二维数组的定义定义格式: 类型说明符 数组名常量表达式1常量表达式2 其中表达式1表示第一维下标的长度;表达式2表示第二维下标的长度;例如: int a23;说明了一个2行3列的数组,数组名为a,数组元素的类型为整型,该数组共有2*3个元素;即: a00,a01,a02 a10,a11,a12注意的是: 二维数组在概念上是二维的,就是说其下标在两个

6、方向上变化,数组元素在数组中的位置也处于一个平面中,并不向一维数组,所有的元素是线性的,但是,二维数组中的元素和一维数组中的元素一样,也是按线性存储的;如何存储呢?首先,它和一维数组一样,也是按线性存储的.在C语言中,二维数组是按行排列的,即存完一行后,顺序存入第二行;还是上面那个例子: int a23;0由于数组a说明为int型,所以数组的每个元素在内存中占两个字节的存储空间,1 2345 六. 二维数组的引用 引用形式:数组名下标下标其中下标应该为整型常量或整型表达式;例如:int a34;a23 表示数组a的第三行第四列的元素.注意:下标变量和数组说明在形式上有些相似,但这两者具有完全不

7、同的含义; 数组说明的方括号中给出的是某一维的长度;而数组元素中的下标是该元素在数组中的位置标识;数组说明中的方括号内只能是常量,而数组元素中方括号中的下标可以是常量,变量或表达式.七. 二维数组的初始化 二维数组初始化也是在类型说明时给各下标变量赋以初值.二维数组可以按行分段赋值,也可以按行连续赋值 1. 按行分段赋值 int a23=1,2,3,4,5,6; 2. 按行连续赋值 int a23=1,2,3,4,5,6;这两种赋值的结果是完全相同的;说明: 1. 可以只对部分元素赋值,未赋值的元素自动取0; 例如: int a33=1,2,3; 是对每行的第一列元素赋值,未赋值的元素自动取0

8、 2. 如果对所有的元素赋初值,则第一维的长度可以不给出; 例如: int a33=1,2,3,4,5,6,7,8,9; 可以改为: int a3=1,2,3,4,5,6,7,8,9; 3数组是一种构造类型的数据,二维数组可以看作是一维数组的嵌套,设一维数组的每个元素又都是一个数组,就组成了一个二维数组,当然,前提是每个元素的类型必须一致;同理,一个二维数组也可以分解为多个一维数组,例如: a34,可分解为3个一维数组,其数组名分别是: a0,a1,a2;对这三个一维数组不需另作说明即可使用,这三个一维数组都有4个元素,例如: 一维数组a0的元素是a00,a01,a02,a03;必须强调的是,

9、a0,a1,a2不能当作下标变量使用,因为它们是数组名,不是一个单纯的下标变量;对于一个数组,例如: a34可以通过循环语句来赋值; for(i=0;i3;i+) for(j=0;j4;j+) scanf(“%d”,&aij);八. 二维数组的使用举例1. 将一个二维数组的行和列元素互换,存到另一个二维数组中.a=1,2,3, b=1,4,4,5,6; 2,5 3,6; 分析: 首先,给a赋值; 然后,通过a给b赋值,bij=aji; 最后,输出b的值;#include main() int a23= 1,2,3,4,5,6; int b32,i,j; for(i=0;i=1;i+) for(

10、j=0;j=2;j+) printf(“%d”,aij); bji=aij;printf(“n”); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(“%d”,bij); printf(“n”); 九. 字符型数组定义: 每个数组元素的数据类型是字符型的一维数组. 字符数组的引用,存储,初始化的方法和一维数组相同例如: 字符型数组的定义 char c10; 定义了字符型数组c,它的数组元素有10个,由于字符型和整型是相通的,因此,上面的定义也可以改为: int c10;例如: 字符型数组的初始化 char c3=a,b,c;注意: 如果花括号提供的数组元素个数大于

11、数组长度,则作语法错误处理; 如果初值个数小于数组长度,则只将这些字符赋给前面的元素,其余的元素自动定为空字符(0); 比如:char c5=a,b,c;abc00如果提供的初值个数和预定的数组长度相同,在定义时可以省掉数组长度,系统自动根据初值个数确定数组长度. 例如: char a=a,b,c,d,e;也可以用字符串常量赋值;如: char ch6=“hello” char ch6=”hello”;char ch=”hello”;hello0十. 字符型数组的引用 可以引用字符数组中的一个元素即得到一个字符!例如: 输出一个字符串Main() char a5=a,b,c,d,e ; int i; for(i=0;i字符串2 返回值0 字符串1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论