程序设计基础第7章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计基础第7章.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础
- 资源描述:
-
1、数数 组组7.17.2 函函 数数7 7.1.1.1.1 数组的概念数组的概念 Add your text in here Click to add Text一组有序数据的集合称为数组。数组:数组:Add your text in here Click to add Text数组中的每一个数据称为一个数组元素。数组元素用数组名和下标来表示。数组元素:数组元素:Add your text in here Click to add Text数组名的命名规则与变量名的命名规则相同。数组名:数组名:Add your text in here Click to add Text用来表示数组元素在数组中的
2、排列顺序。TC规定,下标必须从0开始。下标:下标:Add your text in here Click to add Text表示一个数组元素所需要的下标的个数叫做表示一个数组元素所需要的下标的个数叫做 数组的维数。数组的维数。数组的维数数组的维数:7 7.1.1.2 2 一维数组一维数组1 1.一维数组的定义一维数组的定义v 格式格式:类型标识符 数组名 常量表达式;v 定义的目的定义的目的:为指定的数组分配相应字节的存储单元。int a 10;类型标识符类型标识符数组名数组名常量(大小)常量(大小)定义 a 为一维数组,可独立存放 10个整型数据,系统要为数组 a 分配 2*10=20
3、个字节的存储单元,且这些存储单元是连续的。7 7.1.1.2 2 一维数组一维数组 1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。2)数组名的书写规则应符合标识符的书写规定。3)数组名不能与其它变量名相同。4)方括号中常量表达式表示数组元素的个数,如a5表示数组a有 5个元素。但是其下标从0开始计算。因此5个元素分别为0,a1,a2,a3,a4。对于数组类型说明应注意以下几点:7 7.1.1.2 2 一维数组一维数组 5)不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。6)允许在同一个类型说明中,说明多个数组和多个变量允许在同
4、一个类型说明中,说明多个数组和多个变量。2.2.一维数组元素的引用一维数组元素的引用 数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组元素的一般形式为:数组名数组名下标下标 其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。7 7.1.1.2 2 一维数组一维数组3.3.一维数组的初始化一维数组的初始化 给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时
5、间,提高效率。初始化值的一般形式为:初始化值的一般形式为:类型说明符类型说明符 数组名数组名 常量表达式常量表达式=值,值值,值值值;其中在 中的各数据值即为各元素的初值,各值之间用逗号间隔。7 7.1.1.2 2 一维数组一维数组1)可以只给部分元素赋值。当 中值的个数少于元素 个数时,只 给前面部分元 素赋值。1232)只能给元素逐个赋 值,不能给数组整 体赋值。3)如给全部元素赋 值,则在数组说 明中,可以不给 出数组元素的 数。7 7.1.1.2 2 一维数组一维数组4.4.一维数组的应用一维数组的应用main()int i,a10;for(i=0;i=0;i-)printf(%d,a
6、i);【例例】为一个一维数组赋值,然后按相反顺序输出。为一个一维数组赋值,然后按相反顺序输出。相似的例子相似的例子:从键盘上输入十个整:从键盘上输入十个整数放在一数组中,然后按相反顺序数放在一数组中,然后按相反顺序输出。输出。main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);main()int a10;int i,j,t;printf(“Input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);for(j=1;j=9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;pr
7、intf(the sorted numbers:n);for(i=0;i10;i+)printf(%d ,ai);为数组元素赋值外循环控制比较轮数如果后一个元素比前一个元素小,二者交换输出排序后的数组内循环控制每轮比较次数相邻两个元素进行比较for(j=1;j=9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;外循环变量保证执行n-1=9次,进行9轮比较内循环变量的初值是数组中最前边一个元素的下标内循环变量的终值的确定方法是:在第一轮比较时,i+1的最大值是数组中最后一个元素的下标,同时i应随j的增加而减少。即当j=1时,i的终值应是8,i+1应当为9main()i
8、nt a11;int i,j,t;printf(“Input 10 numbers:n);for(i=1;i11;i+)scanf(%d,&ai);printf(n);for(j=1;j=9;j+)for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers:n);for(i=1;i11;i+)printf(%d ,ai);数组元素a0未赋值,在整个程序中不使用该元素内循环变量的初值是数组中最前边一个元素的下标内循环变量的终值:当j=1时,i+1的最大值是数组中最后一个元素的下标,同时i应随j的增加而减少。即当j=1时,i的最大值应是9
9、,i+1应当为10外循环控制比较轮数7 7.1.1.3 3 二维数组二维数组1 1.二维数组的定义二维数组的定义v 格式:格式:类型标识符 数组名 常量1常量2;v 定义的目的定义的目的:为指定的数组分配相应字节的存储单元。int a 3 4;类型标识符类型标识符数组名数组名常量常量1 1,第一维的大小,第一维的大小常量常量2 2,第二维的大小,第二维的大小定义a为二维数组,可独立存放 3*4=12个整型数据,系统要为数组a分配2*12=24个字节的存储单元,且这些存储单元是连续的。7 7.1.1.3 3 二维数组二维数组2.2.二维数组的引用二维数组的引用 数组元素各维的下标都从0开始排列顺
10、序符合计数器规律。元素各维下标的最大值等于各维的大小减1。数组元素的下标可以为常量、变量、表达式数组元素的下标可以为常量、变量、表达式。二维数组可以看作是特殊的一维数组。格式格式:数组名数组名下标下标1 下标下标23.3.二维数组的初始化二维数组的初始化 二维数组的初始化就是在定义数组的同时对数组元素赋以初值。类型说明符类型说明符 数组名数组名 常量常量1常量常量2=数据表列数据表列 ;7 7.1.1.3 3 二维数组二维数组 int a34 =1,2,3,4,5,6,7,8,9,10,11,12 ;只能为常量只能为常量类型说明符类型说明符 数组名数组名 常量常量1常量常量2=数据表列数据表列
11、1,数据表列数据表列2,数据表列数据表列n ;int a34 =1,2,3,4,5,6,7,8,9,10,11,12 ;7 7.1.1.3 3 二维数组二维数组类型说明符类型说明符数组名数组名 常量常量1常量常量2=数据表列数据表列1,数据表列数据表列2,数据表列数据表列n ;int a34 =1,2,3,4,5,6,;类型说明符类型说明符 数组名数组名 常量常量2=数据表列数据表列1,数据表列数据表列2,数据表列数据表列n ;7 7.1.1.3 3 二维数组二维数组 int a 4 =1,2,3,4,5,6,;对全部行赋初值时,可以省略第一维的大对全部行赋初值时,可以省略第一维的大小,但第二
12、维的大小不能省略小,但第二维的大小不能省略。类型说明符类型说明符 数组名数组名 常量常量1常量常量2=数据表列数据表列 ;int a34 =2,3,;可以部分元素赋初值可以部分元素赋初值7 7.1.1.3 3 二维数组二维数组类型说明符类型说明符 数组名数组名 常量常量2=数据表列数据表列n;int a 4 =1,2,3,4,5,6,7,8,9,10,11,12 ;对全部数组元素赋初值时,可以不指定第一维的大小注意:注意:int a 3 =1,2,3,4,5,6;是绝对不是绝对不 允许的允许的第一维下标i 0,2 第二维下标j 0,3 循环嵌套实现数组元素的输入循环嵌套实现数组元素的输入循环嵌
13、套实现数组元素的输出循环嵌套实现数组元素的输出连续输出 4 个数组元素输出一个换行符号main()int i,j,a34;for(i=0;i=2;i+)for(j=0;j=3;j+)a i j=i*j;for(i=0;i=2;i+)for(j=0;j=3;j+)printf(%d ,a i j );printf(n);7 7.1.1.3 3 二维数组二维数组4.4.二维数组的应用二维数组的应用【例例】在程序中为一个二维数组赋值,然后输出在程序中为一个二维数组赋值,然后输出。一维数组的应用一维数组的应用7 7.1.1.3 3 二维数组二维数组main()int a34=1,2,3,4 ,9,8,
14、7,6 ,-10,10,-5,2 ,i,j;int max,row,cloum;max=a 0 0;max=a 0 0;row=0;colum=0;row=0;colum=0;printf(max=%d,row=%d,colum=%dn,max,row,colum);/*假定a 0 0 为最大值*/for(i=0;i3;i+)for(j=0;j4;j+)if(maxa i j )max=a i j ;row=i;colum=j;/*记下a 0 0 的行和列下标 */*max(最大值),row(行下标)和colun(列下标)*/*记下新的最大值和下标记下新的最大值和下标*/【例例】求二维数组中最
15、大元素及其下标求二维数组中最大元素及其下标。7 7.1.1.4 4 字符数组字符数组213字符数组用来存放字符型数据的数组叫作字符数组,字符数组中的每个元素存放一个字符C 语言中,字符串都是以字符数组的形式存储的字符数组也分成一维字符数组,二维字符数组,多维字符数组1 1.字符数组的定义字符数组的定义7 7.1.1.4 4 字符数组字符数组2.2.字符数组的初始化字符数组的初始化1 1)一)一维数组的初始化维数组的初始化格式格式1:1:类型说明符类型说明符 数组名数组名 常量常量 =字符常量表列字符常量表列 ;例如:例如:char a10=c,p,r,o,g,r,a,m;初始化赋值后各元素的值
16、为:初始化赋值后各元素的值为:cprograma0 a1 a2 a3 a4 a5 a6 a7 a8 a97 7.1.1.4 4 字符数组字符数组格式格式2:2:类型说明符类型说明符 数组名数组名=字符常量表列字符常量表列 ;例如:例如:char a=c,p,r,o,g,r,a,m;初始化赋值后各元素的值为:初始化赋值后各元素的值为:cprograma0 a1 a2 a3 a4 a5 a6 a7 a8当对全体元素赋初值时也可以省去长度说明。这时a数组的长度自动定为9。7 7.1.1.4 4 字符数组字符数组格式格式3:3:类型说明符类型说明符 数组名数组名 常量常量 =字符串常量字符串常量 ;例
17、如:例如:char c12=abcd1234567 ;或者或者 char c12=abcd1234567 ;将双引号中的字符依次赋给各个数组元素,即数组元素c0,c1,c10,c11 的值分别为:a,b,5,6,7,0。7 7.1.1.4 4 字符数组字符数组2 2)二)二维数组的初始化维数组的初始化格式格式1:1:类型说明符类型说明符 数组名数组名 常量常量1 1 常量常量2 2=字符常量表列字符常量表列 ;例如:例如:char a3 4 =1,2,3,4,A,B,C,D,a,b,c,d ;将花括号中的常量依次赋给各个元素,即数组元素a00,a01,a22,a23 的值分别为:1,2,3,4
18、,A,B,C,D,a,b,c,d。但要注意各行中均没有字符串结束的标志0。7 7.1.1.4 4 字符数组字符数组格式格式2:2:类型说明符类型说明符 数组名数组名 常量常量1 1 常量常量2 2=字符常量表列字符常量表列1 1,字符常量表字符常量表2 2,字符常量表字符常量表n n ;例如:例如:char a3 4 =1,2,3,4,A,B,C,D,a,b,c,d ;第一个花括号中的常量依次赋给第一行的各个元素,将第二个花括号中的常量依次赋给第二行的各个元素,即数组元素a00,a01,a22,a23的值分别为:1,2,3,4,A,B,C,D,a,b,c,d。同样各行中均无字符串结束的标志0。
19、7 7.1.1.4 4 字符数组字符数组格式格式3:3:类型说明符类型说明符 数组名数组名 常量常量1 1 常量常量2 2=字符串字符串1 1 ,字符串字符串2 2,字符串字符串n n ;将第一个花括号中的各个字符依次赋给第一行的各个元素,将第二个花括号中的各个字符依次赋给第二行的各个元素,即数组元素:a00,a01,a22,a23的值分别为:1,2,3,4,A,B,C,D,a,b,c,d。但每行的最后都有字符串结束标志0。例如:例如:static char a 3 5 =1234,ABCD,abcd ;第二维大小为57 7.1.1.4 4 字符数组字符数组格式格式4:4:类型说明符类型说明符
20、 数组名数组名 常量常量1 1 常量常量2 2=字符串字符串1 1,字符串字符串2 2,字符串字符串n n ;将第一个字符串常量中的字符依次赋给第一行的各个元素,将第二个字符串常量中的字符依次赋给第二行的各个元素,即数组元素a00,a01,a22,a23的值分别为 1,2,3,4,A,B,C,D,a,b,c,d。但每行的最后都有字符串结束标志0。例如:例如:static char a 3 5 =1234,ABCD,abcd ;第二维大小为57 7.1.1.4 4 字符数组字符数组3.3.字符数组的引用字符数组的引用【例例】main()int i,j;char a 5=B,A,S,I,C,d,B
21、,A,S,E;for(i=0;i=1;i+)for(j=0;j=4;j+)printf(%c,aij);printf(n);7 7.1.1.4 4 字符数组字符数组4.4.字符串和字符串结束标志字符串和字符串结束标志字符串常量:字符串常量:两个双引号之间的字符序列叫做字符串常量,如abcdefg。字符串结束标志:字符串结束标志:系统自动为每一个字符串常量加一个字符串结束标志0,在内存中也占一个字节。字符串常量所占的存储单字符串常量所占的存储单元字节数:元字节数:字符 串中有效字符的个数加1,因为字符串结束的标志0也占一个字节。在TC中,系统是将一个字符串常量按一维字符数组处理的。7 7.1.1
22、.4 4 字符数组字符数组5.5.字符数组的输入输出字符数组的输入输出1 1)单个)单个字符输入字符输入 在 scanf 函数中使用格式字符%c输入单个字符:scanf(%c,&c0);l 使用getchar()函数:c1=getchar();l 使用赋值语句输入单个字符:c1=A;2 2)初始化)初始化时整体输入时整体输入char c 20=abcdef123?&;将各个字符按顺序赋给各个数组元素,同时将字符串结束的标志0也赋给数组元素。即a11中的值为0。7 7.1.1.4 4 字符数组字符数组6.6.字符串处理函数字符串处理函数3 3)用)用 scanf 函数整体输入函数整体输入char
23、 c10;scanf(%s,c);只使用数组名不加取地址符号 从键盘上读入一个字符串,所读入的字符串中不能包含空格、TAB和回车。将串中的各个字符按顺序赋给各个数组元素,在最后一个字符的后面自动加上字符串结束的标志0也赋给数组元素。在 C 的库函数中提供了一些用来处理字符串的函数,这些函数对于字符串的处理使用非常方便,常用的字符串处理函数是:7 7.1.1.4 4 字符数组字符数组字符串处理字符串处理函数函数字符串输出函数:puts()字符串输入函数:gets()字符串连接函数:strcat()字符串复制函数:strcpy()字符串比较函数:strcmp()字符串测长函数:strlen()字符
24、串大小写转换函数 strlwr()和 strupr()注意:注意:用于输入输出的字符串函数,在使用前应包含头文件stdio.h,使用其它字符串函数则应包含头文件string.h7 7.1.1.4 4 字符数组字符数组6.6.字符数组程序举例字符数组程序举例【例例】将两个字符串将两个字符串s1s1和和s2s2连接起来连接起来。include“stdio.h”include“string.h”main()char s110,s210;gets(s1);gets(s2);printf(String1 is:%sn,s1);printf(String2 is:%sn,s2);strcat(s1,s2)
展开阅读全文