C语言chapter07.ppt_第1页
C语言chapter07.ppt_第2页
C语言chapter07.ppt_第3页
C语言chapter07.ppt_第4页
C语言chapter07.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 数组,本章主要内容,数组的引进 一维数组的定义及引用 二维数组的定义及引用 多维数组的定义及引用 字符数组的定义及引用 字符串处理函数,数组的引进,数组是相同类型变量的有序集合。 一个数组里集合了多个数据对象,这些数据对象被称为数组中的元素。 数组中的每一个元素都属于同一种数据类型,它们用一个统一的数组名称和下标(元素在数组中的位置)来唯一确定。 数组也是变量。需要先定义后引用。,7.1.1 一维数组的定义,一维数组的定义: 当数组中每个元素都只带有一个下标时,这个数组就被称为一维数组。 定义一维数组的一般形式: 数据类型名数组名常量表达式; 例如:int num5; float sc

2、ore10;,注意:,若在程序编译或运行时再给数组长度赋值,程序将在编译时出错。 例如:,main() int n; scanf(%d, ,变量说明部分 一定放在main() 函数的开头!,7.1.2 一维数组的引用,引用格式:数组名下标表达式 说明: “下标表达式”的值必须是一个整型的量。 对于所引用的数组元素,使用方法和前面学过的简单数据类型变量使用方法相同,包括取地址等运算。 C语言没有语法结构能同时引用数组的所有元素,只能一个一个的引用每一个数组元素。,【例7.1】从键盘输入5个整数,将它们反序输出。,main() int i; int nums5; for(i=0;i=0;i-) p

3、rintf(%5d,numsi); ,运行情况: 12 34 5 7 89 89 7 5 34 12,7.1.3 一维数组的初始化,初始化,即赋初值。C语言允许定义数组时直接对数组进行初始化。 一般形式: 类型说明符 数组名常量表达式数值表; 举例: float var8=0.1,1.2,2.6,3.5, 4.3,5.5,3.5,5.5; int a5=2,3,4,5,6; 初始化时,各元素的值要顺序放在一对花括号里面,各元素值之间用逗号间隔。,说明:,当花括号中的数值表中的数据个数少于数组定义中的元素个数时,C语言将这些数据方别赋给数组的前几个元素,其余数组元素自动被初始化为0。 当对数组元

4、素赋初值时,可省略数组长度。 例如: float var=0.1,1.2,2.6,3.5, 4.3,5.5,3.5,5.5; int a=2,3,4,5,6; 系统将认为数组的元素个数就是后面初始化时所提供的数据的个数。,为数组中若干元素赋相同初值时,要注意不能随意简化。 例如: float var8= 0.1,0.1,0.1,0.1,0.1, 5.5,3.5,5.5; 不能简化为: float var8= 0.1*5,5.5,3.5,5.5; 否则,系统将认为数组中的各元素的值分别为: var0=0.1*5,var1=5.5,var2=3.5,var3=5.5,var4=0,var7=0。,

5、【例7.2】计算从键盘上任意键入的10个数的和。,main() int i; float num10,sum=0.0; printf(“Input 10 numbers:n”); for(i=0;i10;i+) scanf(%f, ,关于排序程序设计中的常见算法,选择法 冒泡法 插入法 ,从所有的数中找出最小的一个,将其放在最前面;接着在余下的数中找出最小的一个,将其放在第二位,依次类推,数列由前往后逐渐成型。,【例7.4】 用选择法对10个整数按照从小到大的顺序排列。,思 路,下面以6个数(8、6、5、4、3、1)为例,用图示说明。,源程序清单如下:,main() int num10;int

6、 i,j,temp; printf(Please input 10 numbers:n); for(i=0;i10;i+) scanf(%d, ,7.2.1 二维数组的定义,二维数组定义的一般形式: 数据类型名 数组名常量表达式1常量表达式2; 例如: double a33,b22; int f23;,几点说明:,定义一个二维数组a33,一定不要写成a3,3。 同一维数组一样,二维数组中行、列下标的值也都是从0开始的。 二维数组中各元素的顺序遵照按行存放的原则。例如,定义一个二维数组a33后,其中的元素a02在内存中被存放在元素a10之前。 二维数组可以看成是一个特殊的一维数组,只是这个一维数

7、组的每一个元素又是一个一维数组。 a00, a01, a02 a10 a11 a12 A20, a21 , a22,7.2.2 二维数组的引用,引用的一般形式: 数组名下标表达式1下标表达式2 例如: f22,f2*43,f2+14%2 下标表达式的值必须是一个整型的量,可以是整型常量、整型变量或者结果为整型的表达式。,7.2.3 二维数组的初始化,方法1:直接赋初值。适用于数据较少时。 将数组元素的所有初始值都写在一个花括号内,由编译系统按照数组元素在内存中存放的顺序对各元素赋初值。 例如: int num34=11,2,23,4,51,6,7,8,92,10,0,12;,方法2:分行为二维

8、数组赋值。适用于每一行的初始值个数少于每一行中的数组元素个数时。 例如: int num34=11,2, 51,6,7, 92,10,0,12;,每一行中后面的剩余元素被自动赋值为0 !,二维数组的长度不能随意省略,必须遵守如下规则:,使用第一种方式,只有当为二维数组的所有元素赋初值时,所定义数组的第一维的长度才可以省略。 例如: int num 4=11,2,0,0,51, 6,7,0,92,10,0,12;,使用第二种方式,无论是为二维数组的所有元素赋初值,还是为二维数组的部分元素赋初值,定义数组时都可以省略第一维的长度。 无论采用上述哪一种方式为二维数组元素赋初值,在定义数组时第二维的长

9、度都绝对不可以省略。,【例7.6】 有一个34的矩阵,编写一个程序,找出其中的最大值和最小值,并输出其所在的行号和列号。,main() int i,j,row1,col1,row2,col2,max,min , a34; for (i=0; imax) max=aij;row1=i;col1=j; if(aijmin) min=aij;row2=i;col2=j; printf(max=%5d,row=%d,col=%dn,max,row1,col1); printf(min=%5d,row=%d,col=%dn,min,row2,col2); ,7.3 字符数组,字符数组,即存放字符数据的数

10、组。 字符数组操作: 字符数组的定义及引用 字符数组的初始化 字符数据的输入输出 字符串处理函数,字符数组的定义及引用,定义及引用方法:同一般数组。 举例: char c18; char c2310; 每一个字符数组元素对应一个字符数据。 字符数组名可表示该字符数组的首地址!,字符数组的初始化(方法一),方法一:逐个字符赋给字符数组中各元素. 例如: char c5=H,e,l,l,o; 则上述字符赋给字符数组c中的5个元素: c0 c4。,说明:,若数组的初值个数少于数组长度,剩余元素为空字符0。 若初始化时省略第一维数组长度,系统根据初值个数自动确定。,方法:用字符串常量为字符数组中各元素

11、赋初值。 说明:每个字符串尾都有一个0,作为字符串结束标志。,字符数组的初始化(方法二),举例:,用字符串常量为字符数组初始化: char ch210=“Hello”; char ch3210=“Hello”,”World”; 可化简为: char ch25=“Hello”; char ch3210=“Hello”,”World”; 二维数组不能再化简了!下面是错误的: char ch3210=“Hello”,”World”;,字符数组的输入输出,方法一: 使用 scanf( )和printf( )函数。 采用“c”格式符逐个字符输入、输出。 采用“s”格式符将字符串常量整个输入或输出。,【例

12、7.9】逐个字符输出“Hello,World!”。,main() char c112= H,e,l,l,o, W,o,r,l,d,!; int i; for(i=0;i12;i+) printf(%c,c1i); printf(n); 运行后,屏幕上显示:Hello,World!,【例7.11】用“%s”格式符输入、输出字符串。,main() char c310; char c4 = are good.; scanf(%s,c3); printf(%s%snn,c3,c4); 运行后,键入: You are 屏幕上显示输出: You are good.,使用scanf函数时, 输入的字符串中如果含有空格 或制表符,系统遇到时会认为输 入结束,接着自动在字符串的 末尾加上结束标志0。,字符数组的输入输出,方法二: gets( )函数:输入字符数组 puts( )函数:输出字符数组,格式:gets(字符数组名); 功能: 直接输入字符串,直到到遇回车为止。,gets( )函数:,格式: puts(字符数组名); 功能: 直接输出字符串,直到遇到结束标志0为止,输出后自动换行。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论