数组c语言课件

上传人:F****n 文档编号:88095795 上传时间:2019-04-18 格式:PPT 页数:46 大小:1.23MB
返回 下载 相关 举报
数组c语言课件_第1页
第1页 / 共46页
数组c语言课件_第2页
第2页 / 共46页
数组c语言课件_第3页
第3页 / 共46页
数组c语言课件_第4页
第4页 / 共46页
数组c语言课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《数组c语言课件》由会员分享,可在线阅读,更多相关《数组c语言课件(46页珍藏版)》请在金锄头文库上搜索。

1、第四章 数 组,Chapter 4 Array,数组必须先说明后使用。说明的目的如下:,说明数组的名字(标识)。 说明数组的类型。 说明数组的维数。 确定各维下标的变化范围。,编译系统将根据说明,开辟内存单元按特有的顺序和相应的类 型为各元素分配内存单元。,4.2 一维数组,一维数组的说明,说明方式:,type array1常量表达式, , arrayn常量表达式;,类型说明符,根据需要可加修饰说明。说明数组的类型。,数组名,用标识符命名。,用 包含的常量表达式。数组的下标从0变化到常量达式的值减一。,int id5, iyear10; float fScore36;,当说明数组后,编译时系统

2、会根据定义的类型分配连续的一段 内存单元给数组的各元素。,id0,id1,id2,id3,id4,系统为数组分配的连续内存单元,每个单元占两个BYTE。首地址用数组名id表示。,一维数组的初始化,数组的元素可以在说明数组时初始化。,int a10=1,2,3,4,5,6,7,8,9,10; /*说明数组,同时初始化全部元素。*/,float fValue10=1.0,2.0,3.0; /*说明数组,给部分元素初值,其余元素为0。*/,unsigned a =0x0000,0x0001,0x0002; /*当数组元素全部赋初值时,可以不指定长度*/,数组的引用,原 则:只能引用数组元素,而不能引

3、用整个数组。 引用方式:数组名整型表达式 /*下标变量*/ 每个数组元素,可以出现在简单变量能够出现的任何地方。,a1=12; s=a2+a1*20;,举例,求10个学生一门课程的平均分,并输出低于平均成绩的分数。,#include void main(void) float fScore10,aver=0; int i; for(i=0;i10;i+) scanf(“%f”, ,说明数组。,循环输入各元素的值并累加。,循环判断条件,满足条件输出。,4.2 多 维 数 组,在实际应用中,经常会遇到一些用多维索引的数据。如:四个 学生三门课的成绩。可以用下表表示:,显然,该表的每一项需要有两个索

4、引项。表现为数组的两个下 标。超过一个下标的数组称为多维数组。,行:代表某个学生。,列:代表某门课程。,多维数组的说明,说明方式: type array常量表达式1常量表达式n,;,n个整型常量表达式,数组元素的个数?,int a23 , b452;,多维数组在内存中的顺序,int a33;,二维结构: a00 a01 a02 a10 a11 a12 a20 a21 a22,排列顺序:先行后列。,a00,a01,a02,a10,a11,a12,a20,a21,a22,下 标 为 0 的 行,总原则:最后一个下标先变化,变化一个周 期后,倒数第二个开始变化,如此类推。,a为数组在内存中的首地址。

5、,int b234;,内存中的排列?,多维数组赋初值,数组可以在说明时初始化。,全部赋初值,int a23=1,2,3,4,5,6;,下标为0的一行,下标为1的一行,int b23=1,2,3,4,5,6;,按内存顺序赋初值。,部分赋初值,int a23= 1 , 2 ;,0行的0列的元素赋初值。0行其余值为0。,int a23=1,2;,对全体数组元素赋初值,第一维下标可以省略。,int a 3=1, 2, 3, 4, 5, 6;,数组元素的引用,数组定义后,具备简单变量的一切性质,可以作为表达式的运 算对象,也可以被赋值。引用时,只能引用数组元素,方式如下:,arrayexp1expn,i

6、nt a1010 ,y,i=2; ai+26=20; y=ai+26*100/30; a1011=34;,对4行6列的元素赋值。,参加表达式运算。,C语言不作下标检查,语法正确,但使用危险,可能造成程序的错误!,整型表达式。,4.4 字 符 数 组与字符串,C语言没有字符串变量,可以定义字符数组,每个元素存放一 个字符,从而达到存放字符串的目的。,字符数组的说明,char charrayconst exp1const expn,; char a10,b212;,字符数组的初始化,一维数组赋初值,char str16= h, e, l, l, o,0; char str2 =”hello ”;,

7、用单个字符对每一个元素赋值。,用字符串对数组赋初值。,可以指定长度,也可不指定长度。,系统会在字串的结尾加0,表示字符串结束。因此,说明数组 时,长度指定应至少比实际长度大1,保证赋初值正确。,0,存储结构:,h,e,l,l,o,0,二维数组赋初值,二维数组的每一行可以存放一个字符串。,char str36=”wang”,”zhang”,”liu”;,str数组在内存中的首地址。,存储结构,字符数组的输入输出,格式输入输出函数,输出: for(i=0;iSTRLEN;i+) printf(“%c”,str i ); /*通过循环输出各元素*/ printf(”%s”,str); /*用字符串形

8、式输出*/,输入: scanf(”%s”,str); /*用字符串输入整个数组*/,用scanf函数输入时space作为输入的分隔符,因此输入带空格 的字符串,会造成输入不全。,char a20; scanf(”%s”,a); 输入:China Anhui Hefei 结果a数组的内容是:China0,为了解决这个问题,系统定义如下专用于字符数组的i/o函数。,gets( )字符串输入函数,用法:,char str 80; gets(str);,作用: 读入一个以换行符为终结符的字符串到str中,用0代替换行符。,数组名作为函数的参数。,puts( )字符串输出函数,用法:,char stri

9、ng =”China”; puts(string);,数组名作为函数的参数。,作用: 输出以NULL 即0结尾的字符串string,自动加上换行符。,字符输入输出举例,#include void main(void) char str80; int i; gets(str); for(i=0 ; str i !=0; i+) if(stri=a ,chp4ex0,判断字符串结束。,常用的字符处理函数,C语言定义了一系列的字符处理函数用于字符串的处理,该类 函数的原型定义在string.h中。因此,在使用该类函数时,应在程 序的开始处,加#include ,字符串拷贝函数strcpy(str1,

10、str2),作用:将str2拷贝到str1中。,用法: char str110, str2 =”Computer”; strcpy(str1,str2); /*str1的内容是“Computer”*/ strcpy(str2,”Program”); /*str2的内容是“Program”*/,说明:,str1的长度要足够长; str1只能是字符数组名,str2可以是字符数组或字符串常量。,字符串连接函数strcat(str1, str2),作用:将str2连接到str1后(去掉str1的0)。,用法: char str115=“Anhui ”, str2 =”Hefei”; strcat(st

11、r1,str2); puts(str1); /*输出结果为 Anhui Hefei */,说明:,str1的长度要足够长; str1只能是字符数组名,str2可以是字符数组或字符串常量。,测试字符串长度函数strlen(str),作用:测试字符串的实际长度。函数运算得到整型值,该值是 字符串的长度!,int iLenStr; char str =“China”; iLenStr=strlen(str); printf(“%d”,iLenStr);,结果?,字符串的比较 strcmp(str1,str2),作用:对str1和str2 进行逐位无符号字符(ASCII码)比较, 直到对应位字符能够确

12、定关系或到串尾为止。返回整型比较结果。,字符的数值关系也就是字符的ASCII码值的数值关系。,比较结果如下:,char str1 =”abcd”; char str2 =“abcd”; int iRe1,iRe2,iRe3; iRe1=strcmp(str1,”abdc”); iRe2=strcmp(str1,str2); iRe3=strcmp(”abcde”,str2);,abcd,abdc,c,d,c-d -1 结果小于0。,strlwr(str)将str中的大写字母转换成小写字母。,strupr(str)将str中的小写字母转换成大写字母,#include #include void

13、main(void) char str1 =“c programming! 123“,str2=“Computer“; strlwr(str2); strupr(str1); puts(str1); puts(str2); ,C PROGRAMMING! 123 computer,举例:统计三行文字中大写字母、小写字母及数字的个数。,#include #include void main(void) char str80; int i, j, iAnum=0, ianum=0,i0num=0; for(i=0; i=A ,行循环,列循环,chp4ex2,数组的常用算法,数组是同类型数据的集合。

14、便于整体处理数据,数组操作的主 要算法有:,求极值; 排序; 查找;,求极值及其位置,算法演示,一维数组的极值,#include void main(void) int a10=1,6,-2,5,4,32,47,-66,13,14; int iMax, iPos, i; iPos=0; iMax=a0; for(i=1; iiMax) iMax = ai; iPos = i; printf(“Max=%5d Position=%5d”,iMax,iPos); ,假定最大值及其位置。,循环比较,当前元素比最大值大,将其 赋值为新的最大值并记录其位置。,chp4ex3,二维数组求极值,#inclu

15、de void main(void) float a34= 1.0, 3.0, 5.2, 7.4, 4.6, 5.5, 4.2, 1.2, 10.5, 0.23,1.3, 0.5; int i, j, iRow=0,iCol=0; for(i=0; i3; i+) for(j=0;j4;j+) if(aijaiRowiCol) iRow = i; iCol = j; printf(”%f7.2,iRow%5d,iCol%5d”,aiRowiCol,iRow,iCol); ,假定最小值的位置。,二重循环遍历所有元素,比较求最小值,记录其位置。,chp4ex4, 排 序,排序的概念,排序是将一组随机排放的数按下标顺序从大到小或从小到大重 新排列。,1 ,5,4,6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号