C语言基础 第7章一维数组优质PPT.pptx
《C语言基础 第7章一维数组优质PPT.pptx》由会员分享,可在线阅读,更多相关《C语言基础 第7章一维数组优质PPT.pptx(19页珍藏版)》请在冰豆网上搜索。
数组下标的个数,称为数组的维数。
7.1.1一维数组的定义,点击此处结束放映,和其他变量一样,数组也要遵循“先定义后引用”的原则。
程序中使用数组时,必须先用数组定义语句对其进行说明。
通过定义说明数组的名字,数据类型,维数和容量。
一维数组定义语句的一般格式为:
数据类型数组名常量表达式;
常量表达式表示的是数组容量,也叫做数组的长度。
它说明数组元素的个数。
当定义了一个数组后,系统就在内存的数据区为它开辟一个连续空间,用来存储各数组各元素的数据。
下标值是从零开始的。
作为变量的数组元素,它的下标,既可以是常量表达式,也可以是含变量的表达式,例如,abci,absi+j等。
点击此处结束放映,构造数据类型之一,数组:
有序数据的集合,用数组名标识,数组名常量表达式;
合法标识符,表示元素个数下标从0开始,:
数组运算符单目运算符,元素:
属同一数据类型,用数组名和下标优确先定级
(1),左结合不能用(),一维数组的定义定义方式:
数据类型例inta6;
a0a1a2a3a4a5,012345,a,编译时分配连续内存内存字节数=数组维数*sizeof(元素数据类型),数组名表示内存首地址,是地址常量,点击此处结束放映,7.1.2数组元素的引用数组元素的引用是通过数组下标变量的实现的。
下标变量的形式为:
数组名下标例7.1.1设有整型数组a,其长度为5。
编写程序,令5个数组元素的值依次为10,20,30,40和50并输出数组各元素的值。
这个问题可以用循环结构技术完成。
程序如下:
点击此处结束放映,#includestdio.hmain()inti,a5;
for(i=1;
i=5;
i+)ai-1=i*10;
/*为数组元素赋值*/for(i=0;
i=4;
i+)printf(a%d=%dn,i,ai);
/*输出数组各元素的值*/,点击此处结束放映,程序给出下面的输出结果:
a0=10a1=20a2=30a3=40a4=50,点击此处结束放映,可以看到,数组元素的引用是通过数组名和相应的下标引用的。
这种引用方法叫作“下标法”。
在程序中引用数组元素时,其下标不能超过该数组定义的长度。
C语言系统不进行数组是否超出定义的边界的检查,这个任务由用户自己解决。
这就要求程序设计人员必须给数组以足够的容量,当然,还要注意程序的正确性。
数组容量不够或程序的错误,都有可能导致数组的运算超出数组的边界。
运算超出数组边界是有一定危险的,编程时要特别注意。
点击此处结束放映,例inti=15;
(不能用变量定义数组维数),例inta10;
printf(“%d”,a);
(),必须for(j=0;
j10;
j+)printf(“%dt”,aj);
(),例intdaintatd5a;
tai;
点击此处结束放映,d一ata维5数=1组0;
的/引/C语用言对数组不作越界检查,使用时要注意数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式:
数组名下标其中:
下标可以是常量或整型表达式,7.1.3一维数组的初始化,初始化方式inta5=1,2,3,4,在5定;
义数组时,为数组元素赋初值等价于:
a0=1;
(在a1编=译2阶;
a段2使=之3;
得a到3初=4值;
)a4=5;
说明:
数组不初始化,其元素值为随机数对static数组元素不赋初值,系统会自动赋以0值只给部分数组元素赋初值当全部数组元素赋初值时,可不指定数组长度s如taticiinnttaa55=;
6,2,3;
等等价价于in于t:
a:
a=0a=10,02;
=,36a,;
41a,5=1,60=;
2a;
a22=0=;
3a;
a33=0=;
0a;
a44=0=;
0;
如编in译ta系3统=根6,据2,3初,5值,1个;
数(确)定数组维数,点击此处结束放映,7.1.4一维数组程序设计,点击此处结束放映,一维数组的程序设计,仍然离不开我们已经学过的顺序结构、选择结构和循环结构的设计方法。
但在这一节我们更关注的是数组的设计和处理。
我们要学习如何根据问题确定所需要的数组,如何处理数组中的各个数组元素。
对于若干个相互关联的,有某种联系的数据,一般用数组来组织这些数据,会对程序的数据处理带来很大的好处,减小程序设计的难度,提高数据处理的效率。
在加工处理数组数据方面,循环程序技术起着非常大的作用。
在许多情况下,不采用循环程序设计恐怕是不可能的。
下面通过一些程序例子来学习一维数组程序的设计。
点击此处结束放映,程序举例,步骤:
2.处理:
(a)先令max=min=x0,若minxi,令min=xi3.输出:
max和min,#include,点击此处结束放映,#defineSIZE10,例读10个整数存入数组ma,in找()出其中最大值和最小值intxSIZE,i,max,min;
printf(Enter10integers:
n);
for(i=0;
iSIZE;
i+),printf(%d:
i+1);
1.输入:
for循环输入10个整数scanf(%d,max=min=x0;
(b)依次用xi和max,min比fo较r(i=(循1;
i环S)IZE;
i+)若maxxi,令max=xiif(maxxi)max=xi;
if(minxi)min=xi;
printf(Maximumvalueis%dn,max);
printf(Minimumvalueis%dn,min);
例用简单选择法对10个数排序,排序过程:
首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换第一趟选择排序,结果最小的数被安置在第一个元素位置上再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序重复上述过程,共经过n-1趟排序后,排序结束,点击此处结束放映,k,例i=1,初始:
4193,k,k,j,38659776134927jjjjj,i=2jjjjj二趟:
13276597764938,点击此处结束放映,Ch5_201.c,输入n个数给a1到anfori=1ton-1,ajak,真k=j,输出a1到an,k=iforj=i+1ton,i!
=k,真aiak,假,#includemain(),点击此处结束放映,inta11,i,j,k,x;
printf(Input10numbers:
i11;
i+)scanf(%d,i+),假k=i;
for(j=i+1;
j=10;
j+)if(ajak)k=j;
if(i!
=k)x=ai;
ai=ak;
ak=x;
printf(Thesortednumbers:
i+)printf(%d,ai);