第四章-数-组-C语言课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四章-数-组-C语言课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 语言 课件
- 资源描述:
-
1、第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology第四章第四章 数数 组组Chapter 4 Array第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组必须先说明后使用。说明的目的如下数组必须先说明后使用。说明的目的如下:说明数组的名字(标识)。说明数组的名字(标识)。说明数组的类型。说明数组的类型。说明数组的维数。说明数组的维数。确定各维下标的变化范围。确定各维下标的变化范围。 编译系统将根据说明,开辟内存单元按特有的顺序和相应的类编译系统将根据说明,开辟内存
2、单元按特有的顺序和相应的类型为各元素分配内存单元。型为各元素分配内存单元。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology4.2 一维数组一维数组 一维数组的说明一维数组的说明说明方式:说明方式: type array1常量表达式常量表达式, , arrayn常量表达式常量表达式;类型说明符,根据需要可加修饰说明。说明数组的类型。类型说明符,根据需要可加修饰说明。说明数组的类型。数组名,用标识符命名。数组名,用标识符命名。 用用 包含的常量表达式。数组的下标包含的常量表达式。数组的下标从从0变化到常量达式的值减一。变化到常量达式
3、的值减一。int id5, iyear10;float fScore36; 当说明数组后,编译时系统会根据定义的类型分配连续的一段当说明数组后,编译时系统会根据定义的类型分配连续的一段内存单元给数组的各元素。内存单元给数组的各元素。id0id1id2id3id4 系统为数组分配的连续内存单元,每个系统为数组分配的连续内存单元,每个单元占两个单元占两个BYTE。首地址用数组名。首地址用数组名id表示。表示。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology一维数组的初始化一维数组的初始化 数组的元素可以在说明数组时初始化。数组的元素
4、可以在说明数组时初始化。int a10=1,2,3,4,5,6,7,8,9,10;/ /* *说明数组,同时初始化全部元素。说明数组,同时初始化全部元素。* */ / float fValue10=1.0,2.0,3.0;/*说明数组,给部分元素初值,其余元素为说明数组,给部分元素初值,其余元素为0。*/unsigned a =0 x0000,0 x0001,0 x0002;/*当数组元素全部赋初值时,可以不指定长度当数组元素全部赋初值时,可以不指定长度*/ 第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组的引用数组的引用原
5、原 则:则:只能引用数组元素,只能引用数组元素,而不能引用整个数组。而不能引用整个数组。引用方式:数组名引用方式:数组名 整型表达式整型表达式 / /* *下标变量下标变量* */ /每个数组元素,可以出现在简单变量能够出现的任何地方。每个数组元素,可以出现在简单变量能够出现的任何地方。 a1=12; s=a2+a1*20;第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology举例举例求求10个学生一门课程的平均分,并输出低于平均成绩的分数。个学生一门课程的平均分,并输出低于平均成绩的分数。#include void main(voi
6、d) float fScore10,aver=0; int i; for(i=0;i10;i+) scanf(“%f”,&fScorei); aver+=fScorei; aver/=10; for( i = 0; i 10; i+) if(fScore i aver) printf(“num=%d,score=%f ” ,i+1,fScore i ); 说明数组。循环输入各元素的值并累加。循环输入各元素的值并累加。循环判断条件,满足条件输出。循环判断条件,满足条件输出。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology4.2 多
7、多 维维 数数 组组 在实际应用中,经常会遇到一些用多维索引的数据。如:四个在实际应用中,经常会遇到一些用多维索引的数据。如:四个学生三门课的成绩。可以用下表表示:学生三门课的成绩。可以用下表表示:92.580.591.099.083.590.070.066.060.078.056.059.0 显然,该表的每一项需要有两个索引项。表现为数组的两个下显然,该表的每一项需要有两个索引项。表现为数组的两个下标。超过一个下标的数组称为多维数组。标。超过一个下标的数组称为多维数组。行:代表某个学生。行:代表某个学生。列:代表某门课程。列:代表某门课程。第四章第四章 数数 组组Chapter 4 Arra
8、yHefei University of Technology多维数组的说明多维数组的说明说明方式:说明方式: type array常量表达式常量表达式1常量表达式常量表达式n,;n个整型常量表达式个整型常量表达式数组元素的个数?数组元素的个数?int a23 , b452;多维数组在内存中的顺序多维数组在内存中的顺序int a33;二维结构:二维结构:a00 a01 a02a10 a11 a12a20 a21 a22 排列顺序:先行后列。排列顺序:先行后列。a00a01a02a10a11a12a20a21a22下下标标为为0的的行行 总原则:最后一个下标先变化,变化一个周总原则:最后一个下标
9、先变化,变化一个周期后,倒数第二个开始变化,期后,倒数第二个开始变化,如此类推。如此类推。 a为数组在内为数组在内存中的首地址。存中的首地址。int b234;内存中的排列?内存中的排列?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology多维数组赋初值多维数组赋初值数组可以在说明时初始化。数组可以在说明时初始化。全部赋初值全部赋初值int a23=1,2,3,4,5,6; 下标为下标为0的一行的一行下标为下标为1的一行的一行int b23=1,2,3,4,5,6;按内存顺序赋初值。按内存顺序赋初值。部分赋初值部分赋初值int a2
10、3= 1 , 2 ; 0行的行的0列的元素赋初列的元素赋初值。值。0行其余值为行其余值为0。int a23=1,2; 对全体数组元素赋初值,第一维下标可以省略。对全体数组元素赋初值,第一维下标可以省略。int a 3=1, 2, 3, 4, 5, 6;第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组元素的引用数组元素的引用 数组定义后,具备数组定义后,具备简单变量的一切性质简单变量的一切性质,可以作为表达式的运,可以作为表达式的运算对象,也可以被赋值。引用时,算对象,也可以被赋值。引用时,只能引用数组元素只能引用数组元素,方
11、式如下:,方式如下:arrayexp1expnint a1010 ,y,i=2;ai+26=20;y=ai+26*100/30;a1011=34;对对4行行6列的元素赋值。列的元素赋值。参加表达式运算。参加表达式运算。 C语言不作下标检查,语法正确,语言不作下标检查,语法正确,但使用危险,可能造成程序的错误!但使用危险,可能造成程序的错误!整型表达式。整型表达式。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology4.4 字字 符符 数数 组与字符串组与字符串 C语言没有字符串变量,可以定义字符数组,每个元素存放一语言没有字符串变量
12、,可以定义字符数组,每个元素存放一个字符,从而达到存放字符串的目的。个字符,从而达到存放字符串的目的。字符数组的说明字符数组的说明char charrayconst exp1const expn,;char a10,b212;字符数组的初始化字符数组的初始化一维数组赋初值一维数组赋初值char str16= h, e, l, l, o,0;char str2 =”hello ”;用单个字符对每一个元素赋值。用单个字符对每一个元素赋值。用字符串对数组赋初值。用字符串对数组赋初值。可以指定长度,也可不指定长度。可以指定长度,也可不指定长度。 系统会在字串的结尾加系统会在字串的结尾加0,表示字符串结
13、束。,表示字符串结束。因此,说明数组因此,说明数组时,长度指定应至少比实际长度大时,长度指定应至少比实际长度大1,保证赋初值正确。,保证赋初值正确。0存储结构:存储结构:hello0第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology二维数组赋初值二维数组赋初值二维数组的每一行可以存放一个字符串。二维数组的每一行可以存放一个字符串。char str36=”wang”,”zhang”,”liu”;wang0zhang0liu0 str数组在内存中数组在内存中的首地址。的首地址。存储结构存储结构第四章第四章 数数 组组Chapter 4
14、 ArrayHefei University of Technology字符数组的输入输出字符数组的输入输出格式输入输出函数格式输入输出函数输出:输出: for(i=0;iSTRLEN;i+) printf(“%c”,str i ); /*通过循环输出各元素通过循环输出各元素*/ printf(”%s”,str); /*用字符串形式输出用字符串形式输出*/输入:输入: scanf(”%s”,str); /*用字符串输入整个数组用字符串输入整个数组*/ 用用scanf函数输入时函数输入时space作为作为输入的分隔符输入的分隔符,因此输入带空格,因此输入带空格的字符串,会造成输入不全。的字符串,
15、会造成输入不全。char a20;scanf(”%s”,a);输入:输入:China Anhui Hefei 结果结果a数组的内容是:数组的内容是:China0为了解决这个问题,系统定义如下专用于字符数组的为了解决这个问题,系统定义如下专用于字符数组的i/o函数。函数。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technologygets( )字符串输入函数字符串输入函数用法:用法:char str 80;gets(str); 作用作用: 读入一个以换行符为终结符的字符串到读入一个以换行符为终结符的字符串到str中,用中,用0代替换行符。代替
16、换行符。数组名作为函数的参数。puts( )字符串输出函数字符串输出函数用法:用法:char string =”China”;puts(string);数组名作为函数的参数。作用:作用:输出以输出以NULL 即即0结尾的字符串结尾的字符串string,自动加上,自动加上换行符换行符。 第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符输入输出举例#include void main(void) char str80; int i; gets(str); for(i=0 ; str i !=0; i+) if(stri=a&st
17、ri=z) stri -=32; puts(str);chp4ex0判断字符串结束。判断字符串结束。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology常用的字符处理函数常用的字符处理函数 C语言定义了一系列的字符处理函数用于字符串的处理,该类语言定义了一系列的字符处理函数用于字符串的处理,该类函数的原型定义在函数的原型定义在string.h中。因此,在使用该类函数时,应在程中。因此,在使用该类函数时,应在程序的开始处,加序的开始处,加#include 字符串拷贝函数字符串拷贝函数strcpy(str1,str2)作用:将作用:将s
18、tr2拷贝到拷贝到str1中。中。用法:用法:char str110, str2 =”Computer”;strcpy(str1,str2); /*str1的内容是的内容是“Computer”*/strcpy(str2,”Program”); /*str2的内容是的内容是“Program”*/说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符串连接函数字符串连接函数str
19、cat(str1, str2)作用:将作用:将str2连接到连接到str1后(去掉后(去掉str1的的0)。)。用法:用法:char str115=“Anhui ”, str2 =”Hefei”;strcat(str1,str2);puts(str1); /*输出结果为输出结果为 Anhui Hefei */说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。测试字符串长度函数测试字符串长度函数strlen(str) 作用:测试字符串的实际长度。函数运算得到整型值,该值是作用:测试字符串的
20、实际长度。函数运算得到整型值,该值是字符串的长度!字符串的长度!int iLenStr;char str =“China”;iLenStr=strlen(str);printf(“%d”,iLenStr);结果?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符串的比较字符串的比较 strcmp(str1,str2) 作用:作用:对对str1和和str2 进行逐位无符号字符(进行逐位无符号字符(ASCII码)比较,码)比较,直到对应位字符能够确定关系或到串尾为止。直到对应位字符能够确定关系或到串尾为止。返回整型比较结果返回整型
21、比较结果。字符的数值关系也就是字符的字符的数值关系也就是字符的ASCII码值的数值关系。码值的数值关系。比较结果如下:比较结果如下:比较结果比较结果strcmp的值的值str1str2str20char str1 =”abcd”;char str2 =“abcd”;int iRe1,iRe2,iRe3;iRe1=strcmp(str1,”abdc”);iRe2=strcmp(str1,str2);iRe3=strcmp(”abcde”,str2); abcd abdccdc-d -1结果小于0。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Tec
22、hnologystrlwr(str)将将str中的大写字母转换成小写字母。中的大写字母转换成小写字母。strupr(str)将将str中的小写字母转换成大写字母中的小写字母转换成大写字母#include #include void main(void) char str1 =c programming! 123,str2=Computer; strlwr(str2); strupr(str1); puts(str1); puts(str2);C PROGRAMMING! 123computer第四章第四章 数数 组组Chapter 4 ArrayHefei University of Tech
23、nology举例:统计三行文字中大写字母、小写字母及数字的个数。举例:统计三行文字中大写字母、小写字母及数字的个数。#include #include void main(void) char str80; int i, j, iAnum=0, ianum=0,i0num=0; for(i=0; i3 ; i+) gets(str); for(j=0; j=A& strj=a& strj=0& strj=9)i0num+; printf(“%6d,%6d,%6d”,iAnum,ianum,i0num); 行循环行循环列循环列循环chp4ex2第四章第四章 数数 组组Chapter 4 Arra
24、yHefei University of Technology数组的常用算法数组的常用算法 数组是同类型数据的集合。便于整体处理数据,数组操作的主数组是同类型数据的集合。便于整体处理数据,数组操作的主要算法有:要算法有:求极值;求极值;排序;排序;查找查找; ;第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology求极值及其位置求极值及其位置算法演示算法演示 一维数组一维数组的极值的极值#include void main(void) int a10=1,6,-2,5,4,32,47,-66,13,14; int iMax, iPos
展开阅读全文