程序入门语言-C语言第五章数组

上传人:e****s 文档编号:252311425 上传时间:2024-11-14 格式:PPT 页数:34 大小:570.50KB
返回 下载 相关 举报
程序入门语言-C语言第五章数组_第1页
第1页 / 共34页
程序入门语言-C语言第五章数组_第2页
第2页 / 共34页
程序入门语言-C语言第五章数组_第3页
第3页 / 共34页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,第五章 数组,1、数组的意义;,2、一维数组的定义;,3、一维数组的存储;,4、一维数组的访问;,5、一维数组的初始化方法及其与循环的联系;,6、二维数组的定义;,7、二维数组的存储;,8、二维数组的访问和初始化及其与循环的联系;,9、字符串;,10、字符数组;,11、数组的应用;,引言,在实际生活中,常常遇到大批量的数据处理问题。这类问题的特点是数据量比较大,但是各个数据之间存在一定的内在联系。,为了应对这类问题,C语言给出了一个概念数组。,数组是具有相同数据类型的数据的有序集合。,数组中的每一个元素具有相同的名称。表示数组元素的位置使用“下标这个概念,它是数组中元素的一个索引或指示。,数组下标的个数确定数组的维数,只有一个下标的数组称为一维数组,有两个下标的数组称为二维数组,以及三维、多维数组。,5.1,一维数组,一维数组的定义,一维数组的定义格式:,类型说明 数组名整型常量表达式;,例如:,int a 100;,定义了一个数组 a,数组元素类型为整型,元素个数为 100,5.1,一维数组,数组定义说明:,1数组名:按标识符规那么,,2整型常量表达式:表示数组元素个数数组的长度。可以是整型常量或符号常量,不允许用变量。,3类型说明:指的是数组元素的类型,可以是根本数据类型,也可以是构造数据类型。,4C编译程序为数组分配了一片连续的空间。,5C语言还规定,数组名是数组的首地址。即 a=。,5.1,一维数组,一维数组的初始化,1对数组所有元素赋初值,此时数组定义中数组长度可以省略。,2对数组局部元素赋初值,此时数组长度不能省略。,3对数组的所有元素赋初值 0。,int a=1,2,3,4,5;,int a5=1,2,3,4,5;,int a5=0;,int a5=1,2;a0=1;a1=2;,注意:,如果不进行初始化,,那么数组元素的值是随机的,,不要指望编译系统为你设置,为默认值 0。,5.1,一维数组,数组元素的引用,数组元素的引用形式:,数组名下标,注意:数组元素引用时,下标为整型的表达式,可以使用变量。,例,5,1,5.1,一维数组,数组元素的引用说明,1引用数组元素时,下标可以是整型常数、已经赋值的整型变量或整型表达式。,2数组元素本身可以看作是同一个类型的单个变量,因此对变量可以进行的操作同样也适用于数组元素。,3引用数组元素时,下标不能越界。,如:a10,b6,5.1,一维数组,一维数组的应用,例,5,2,从键盘输入 10个整型数据,找出其中的最小值并显示出来。,#include,main(),int j,k,a10;,for(j=0;j10;j+),scanf(%d,printf(n);,k=0;,for(j=1;jaj),k=j;,printf(min=%4dn,ak);,5.1,一维数组,一维数组的应用,例 53采用“冒泡排序法对任意输入的 10个整数按由小到大的顺序排序。,所谓“冒泡排序法 Bubble Sort是指在针对一系列数字进行排序时,使值大的数字逐渐向后以到达排序的目的,类似水泡上浮的过程。,#include,#define N 10,main(),int a10,i,j,t;,for(i=0;iN;i+),scanf(%d,for(i=0;iN-1;i+),for(j=0;jaj+1),t=aj;,aj=aj+1;,aj+1=t;,for(i=0;iN;i+),printf(%d,ai);,5.1,一维数组,一维数组的应用,例 54采用“选择法对任意输入的 10个整数按由大到小的顺序排序。,算法介绍:“选择法是指在待排序的一系列数字中逐个选出值大或小的数字以到达排序的目的。,#include,#define N 10,main(),int b10,i,j,t,max,max_i;,for(i=0;iN;i+),scanf(%d,for(i=0;iN-1;i+),max=bi;,max_i=i;,for(j=i+1;jmax),max=bj;,max_i=j;,if(i!=max_i),t=bi;,bi=bmax_i;,bmax_i=t;,for(i=0;iN;i+),printf(%4d,bi);,printf(n);,5.2,一维数组,二维数组的定义,二维数组的定义格式:,类型说明符数组名整型常量表达式 1 整型常量表达式 2;,例如:,int a34;,5.2,一维数组,二维数组的定义说明,1二维数组中的每个数组元素都有两个下标,且必须分别放在单独的“内。,2二维数组定义中的第 1个下标表示该数组具有的行数,第 2个下标表示该数组具有的列数,两个下标之积是该数组具有的数组元素的个数。,3二维数组中的每个数组元素的数据类型必须相同。二维数组的存放规律是“按行排列。,4二维数组也可以看作是一个特殊的一维数组,其元素也是个一维数组。,5.2,一维数组,5.2.二维数组的初始化,1分行给二维数组所有元素赋初值。,2不分行给二维数组所有元素赋初值。,3给二维数组所有元素赋初值,二维数组第一维的长度可以省略。,4对局部元素赋初值。,int a24=1,2,3,4,5,6,7,8;,int a24=1,2,3,4,5,6,7,8;,int a4=1,2,3,4,5,6,7,8;,int a4=1,2,3,4,5,6,7,8,;,int a24=1,2,5;,5.2,二维数组,数组元素的引用,数组元素的引用形式:,数组名下标 1下标 2,注意:数组元素引用时,下标为整型的表达式,可以使用变量。,例,5,5,5.2,二维数组,二维数组的应用,二维数组的遍历访问扫描,一般都采用双重循环处理行循环与列循环。,例 56分别计算 33矩阵的两条对角线主、辅对角线上的元素之和。,#include,main(),int a33=1,3,6,7,9,11,14,15,17;,int sum1=0,sum2=0,i,j;,for(i=0;i3;i+),for(j=0;j3;j+),if(i=j),sum1=sum1+aij;,if(i+j=2),sum2+=aij;,printf(sum1=%dnsum2=%dn,sum1,sum2);,5.2,二维数组,二维数组的应用,例,5,7,有一个 35的矩阵,要求编程求出该矩阵所有元素中的最大值,并给出其所在的位置,即行、列号。,#include,main(),int i,j,r,c,max;,int b35=1,5,9,13,17,2,6,10,14,18,45,-8,22,79,4;,max=b00;,for(i=0;i3;i+),for(j=0;jmax),max=bij;,r=i;,c=j;,printf(max=%d,r=%d,c=%dn,max,r,c);,5.2,二维数组,多维数组,定义多维数组形式如下:,类型说明数组名 整型常数 1 整型常数 2,整型常数 k;,例如:int a233;,5.2,二维数组,多维数组说明,1对于三维数组,整型常数 1、整型常数 2、整型常数 3可以分别看作“深维或:“页维、“行维、“列维。,2多维数组在三维空间中不能用形象的图形表示。多维数组在内存中排列顺序的规律是:第一维的下标变化最慢,最右边的下标变化最快。,3多维数组的数组元素的引用:,数组名 下标 1 下标 2 下标 k。,多维数组的数组元素可以在任何相同类型变量可以使用的位置引用。只是同样要注意下标不要越界。,5.,字符数组,字符数组的定义、初始化及引用,符数组数组元素的引用与一般的数组类似。,例如:,char c110,str510;,char c23=r,e,d;,char c2=r,e,d;,printf(%c%c%cn,c20,c21,c22);,5.,字符数组,字符串与字符数组,1.字符串与字符数组的关系,用双引号括起来的假设干有效的字符序列,存放字符型数据的数组。,char str1=C,H,I,N,A;,char str2=CHINA;,5.,字符数组,字符串与字符数组,2.字符数组的初始化,除了一般数组的初始化方法外,字符数组初始化还增加了一些方法。,1以字符常量的形式对字符数组初始化。,2以字符串常量的形式对字符数组初始化,char str1=C,H,I,N,A;,char str15=C,H,I,N,A;,char str1=C,H,I,N,A,0;,char str1=CHINA;,char s16=CHINA;,char str280=CHINA;,char str2100=C,H,I,N,A;,char s280=CHINA;,5.,字符数组,字符串与字符数组,3.字符数组的输入输出,1逐个字符输入/输出:采用“%c格式说明和循环,像处理数组元素一样输入输出。,#include,main(),char s7;,int i;,for(i=0;i7;i+),scanf(%c,for(i=0;i0),puts(str1);,else,puts(str2);,printf(n=%dn,n);,5.,字符数组,字符数组应用举例,例,5,17,由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。,#include,#include,main(),char s20,temp20,x;,int i,j;,printf(Please input a string:n);,gets(s);,printf(Delete?n);,scanf(%c,for(i=0,j=0;istrlen(s);i+),if(si!=x),tempj=si;,j+;,tempj=0;,strcpy(s,temp);,puts(s);,5.,字符数组,字符数组应用举例,例 518由键盘输入三个字符串,找出其中的最大串字符串库函数的应用,#include,#include,main(),char str20,s320;,int i;for(i=0;i0),strcpy(str,s0);,else,strcpy(str,s1);,if(strcmp(s2,str)0),strcpy(str,s2);,printf(The largest string is:%sn,str);,5.4小结,在语言中,数组属于构造数据类型。一个数组包含多个数组元素,这些数组元素可以是根本数据类型,也可以是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。,由于有了数组,可以用相同名字引用一系列变量,并用数字下标来识别它们。在几乎所有复杂的软件设计中,均可使用数组缩短和简化程序。,数组有上界和下界,数组的元素在上下界内是连续的。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!