C语言数组详解.ppt
《C语言数组详解.ppt》由会员分享,可在线阅读,更多相关《C语言数组详解.ppt(56页珍藏版)》请在三一办公上搜索。
1、数组,什么是数组?,就是一组具有固定数目的、有序的、类型相同的数据的集合。根据数组下标的多少,数组可以分为一维数组和多维数组。,例如:一个班级有30个学生,可以用g1,g2,g30代表学生的成绩,其中g是数组名,下标代表学生的序号。由于在C语言中无法表示下标,所以就引入了 表示下标。g1:第1个学生的成绩gi:第i个学生的成绩等等,为标识数组中的每个元素,C语言对其进行编号。这个编号称之为数组元素下标。(C语言规定下标从0开始)。,指定该数组的数据个数,用于访问的、具有相同的数据类型。在程序设计中相当于变量名的用法。,一个数组就是一组连续的内存空间,用来保存数据,数组中的每一项称为一个元素。,
2、(一)一维数组(1)定义及使用,类型说明符 数组名常量表达式 int a10,任一种基本数据类型或构造数据类型。,用户自定义的数组名字,其定名规则与变量名定名规则一样,都需遵循标识符定名规则,表示元素的个数,即数组长度。,下标运算符单目运算符优先级(1)左结合不能用(),注意:1.数组名不能与其它变量名相同,void main()int a;float a10;,(一)一维数组(1)定义及使用,2.不能在方括号中用变量来表示元素的个数,但可以是符号常数或常量表达式。,int n;scanf(%d,#define FD 5 void main()int a3+2,b7+FD;,(一)一维数组(1
3、)定义及使用,3.方括号中常量表达式表示数组元素的个数。如int a5:数组a有5个元素,其下标从0开始,分别为a0,a1,a2,a3,a4。,4.允许在同一个类型说明中说明多个数组和多个变量。例如:int a,b,c,d,k110,k220;,如果出现数组越界,编译系统没有提示的。,(一)一维数组(1)定义及使用,数组必须先定义,然后使用。数组元素的表示形式为:数组名下标 C语言规定只能逐个引用数组元素而不能一次引用整个数组。,可以是整型常量或整型表达式,(一)一维数组(2)引用,全部初始化 部分初始化 使用输入函数scanf初始化 使用表达式赋值,int a10=0,1,2,3,4,5,6
4、,7,8,9;,a0=0;a1=1;a2=2;a3=3;a4=4;a5=5;a6=6;a7=7;a8=8;a9=9;,int a10=0,1,2,3;,a0=0;a1=1;a2=2;a3=3;a4=0;a5=0;a6=0;a7=0;a8=0;a9=0;,int a10;,for(int i=0;i10;i+)scanf(%d,int a10=0,1,2,3;,a4=a3+2;,对全部数组元素赋初值时,数组长度可以省略,(一)一维数组(3)初始化,一维数组元素的存储方式,int a5=1,2,3,4,5;,一维数组元素的存储方式,#include void main()int a5=0,1,2,
5、3,4;for(int i=0;i5;i+)printf(a%d=%d,其地址是%dn,i,ai,数组名表示数组的起始地址,是一个地址常量,程序举例1:用选择排序法进行排序。,选择排序法是编程中经常用的一种排序算法。具体如下:先将5个数中最小的数与a0对换,再将a1到a4中最小的数与a1对换,这样每比较一轮,找出一个未经排序的数中最小的一个。共比较4轮。,int a5=3,6,1,9,4;,1.4一维数组程序举例,a0 a1 a2 a3 a4 3 6 1 9 4 未排序的情况 1 6 3 9 4 将5个数中最小的数1与 a0对换 1 3 6 9 4 将余下的4个数中最小的数 3与a1 对换 1
6、 3 4 9 6 将余下的3个数中最小的数 4与a2 对换 1 3 4 6 9 将余下的2个数中最小的数 6与 a3 对换,main()int i,j,k,t;int a5=3,6,1,9,4;for(i=0;i sizeof(a)/sizeof(int)1;i+)k=i;for(j=i+1;j sizeof(a);j+)if(aj ak)k=j;if(k!=i)t=ai;ai=ak;ak=t;,容易出错的地方,数组的起始下标、最后一个元素的下标 定义数组时不指定长度(动态数组)对数值型数组进行整体操作 用scanf语句时,数组元素前应加,小结,一维数组的定义、初始化、引用、输入、输出概念、操
7、作必须掌握 数组中的所有元素,数据类型都一致 数组名字代表数组的首地址,是一个常量数组元素具有和相同单个变量一样的属性,凡允许使用单个变量的地方均可以使用数组元素,(二)二维数组定义及使用,这儿只讨论二维数组,多维数组可由二维数组推导得出,二维数组定义的一般形式为:类型说明符 数组名常量表达式常量表达式,第一常量表达式为行数,第二个为列数,int a34;,float a3,4,b5,10;/*错误*/,二维数组中的元素在内存中的排列顺序是:按行存放,即先顺序存放第一行的元素,再存放第二行的元素,二维数组在内存中的存放,下图表示对a34数组存放的顺序,int a23=1,2,3,4,5,6;,
8、(二)二维数组存储方式,#include void main()int a23=1,2,3,4,5,6,i,j;for(i=0;i2;i+)for(j=0;j3;j+)printf(第a%d%d元素=%d,其地址为:%dn,i,j,aij,(二)二维数组引用,二维数组的表示形式:数组名下标下标,注意:下标可以是整型表达式,如a2-12*2-1 数组元素可以出现在表达式中,也可以被赋值 b12=a23/2;在使用数组元素时,应该注意下标值应在已定义的数组大小范围内 int a34;a34=5;严格区分在定义数组时用的a34和引用元素时的a34,全部初始化 部分初始化 使用输入函数scanf初始化
9、,int a23=0,1,2,3,4,5;int a23=0,1,2,3,4,5;,a00=0;a01=1;a02=2;a10=3;a11=4;a12=5;,int a23=0,1,2;int a23=0,1;,a00=0;a01=1;a02=2;a10=0;a11=0;a12=0;,int a23;,for(int i=0;i2;i+)for(int j=0;j3;j+)scanf(%d,对全部数组元素赋初值时,第一维的长度可以省略,(二)二维数组初始化,(二)二维数组程序举例,例3:一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。,(二)二维数组程序举
10、例,例3:一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。,#include#define N 3#define M 5void main()float scoreNM,avg1=0,avgN,sumN=0;int i,j;for(i=0;iN;i+)for(j=0;jM;j+)printf(第%d门课,第%d个学生的成绩:,i,j);scanf(%f,小结,二维数组在内存中是按行存放 数组元素的下标每一维都是从0开始的 数值型数组不能够整体引用 可以把二维数组看成是一个特殊的一维数组,即其元素是一个一维数组 二维数组初始化有两种方法:按行赋值或者一行赋值
11、,(三)字符数组定义,字符数组:用来存放字符数据的数组就是字符数组。定义方式:char 数组名长度,一维数组:char a10;二维数组:char a45;,(三)字符数组初始化,对字符数组初始化,最容易理解的方式是逐个字符赋给数组中各元素。如:Char c10=I,a,m,,h,a,p,p,y;,如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。,如果花括弧中提供的初值个数(即字符个数)大于数组长度,则按语法错误处理。,注意:,char c=I,a,m,h,a,p,p,y;数组c的长度自动定为10。,#include void main()char c10=I,a,m,a,b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数组 详解
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5426337.html