第8章数组.ppt
《第8章数组.ppt》由会员分享,可在线阅读,更多相关《第8章数组.ppt(58页珍藏版)》请在三一文库上搜索。
1、第8章 数组,8.1 一维数组的定义、初始化和使用 8.2 多维数组的定义、初始化和使用 8.3 数组作为函数参数 8.4 字符数组 8.5 字符串处理函数 8.6 数组应用举例 作业:3,4,6,12,15,2,8.1 一维数组的定义、初始化和使用,什么是数组? 数目固定、类型相同的若干个变量的有序的集合。 为什么引入数组? 通过数组,可以方便地存储和处理许多同类型数据。,3,1.一维数组的定义,格式:,数据类型 数组名常量表达式;,值必须为正整数,例: int score100; float salary3 ; bool married2 ; char name4 ;,表示元素个数,4,1
2、.一维数组的定义(续),数组的存储特点: 在内存中占据一组连续的存储单元。,. . .,a0,a1,a2,a9,例: int a10;,. . .,下标的取值范围: 0 数组元素个数-1,5,1.一维数组的定义(续),注意点:,用常量: const int num = 20; int scorenum;,能否用变量? int num = 20; int scorenum;,!数组的大小在编译时必须确定,在程序执行过程中不能改变。,6,2.一维数组的初始化,定义数组时,可以给其中的元素赋初值,称为数组的初始化。,例: int arr5 = 9,8,7,6,5;,数据类型 数组名个数 = 元素1初
3、值,元素2初值,;,初始化方法,7,2.一维数组的初始化(续),形式1:对所有元素赋初值。,例如: int a10=0,1,2,3,4,5,6,7,8,9;,8,2.一维数组的初始化(续),形式1:对所有元素赋初值。,例如: int a10=0,1,2,3,4,5,6,7,8,9;,int a=0,1,2,3,4,5,6,7,8,9;,可省略大小,编译器根据初值表中元素的个数自动确定数组的大小,9,2.一维数组的初始化(续),形式2:对部分元素赋初值。,例如: int b8=1,2,3,4,5;,只给前面部分元素赋初值时,后面其余元素的初值自动赋为0,10,3.一维数组的使用,使用数组中某一个
4、元素的格式: 数组名下标表达式,例如: int a10; a0=1,a9=2;,11,3.一维数组的使用(续),越界问题 若一个数组含有n个元素,访问元素时,必须保证下标表达式的值是从0到n-1之间的整数。如果表达式的值超出该范围,这种现象称为越界。,例如: int a5; a5=3;,数组存储空间之外的内存单元,错误!,12,3.一维数组的使用(续),两个数组的相互赋值,int a5=1,2,3,4,5,b5; b=a;,for(int i=0;i5;i+) bi=ai;,/错:数组之间不能直接相互赋值。,13,3.一维数组的使用(续),如何输入数组?,int score5; cin sco
5、re;,int score5; for(int i=0;i scorei;,14,3.一维数组的使用(续),如何输出数组?,int a5 = 1,2,3,4,5; couta;,int a5 = 1,2,3,4,5; for(int i=0;i5;i+) coutai;,15,4.一维数组的应用举例,例8.1 用一维数组存放前20个斐波那契(Fibonacci)数并输出。斐波那契数的第一和第二个数分别为0和1,从第三个开始,每个斐波那契数是前两个斐波那契数的和。,#include void main( ) int fib20=0,1; /定义数组,并初始化 for(int i=2;i20;i+
6、) /通过循环依次访问数组元素 fibi=fibi-1+fibi-2;/置当前元素为前两元素之和 for(i=0;i20;i+) /输出前20个斐波那契数 coutfibi“ “; ,16,例8.2 某学校有若干名学生参加了100米短跑测试,成绩分别为13.6、14.8、12.0、12.7、15.6、13.4、14.9、12.6秒,求出其中最快和最慢的成绩。,#include void main( ) double score= 13.6,14.8,12.0, /100米短跑成绩 12.7,15.6,13.4,14.9,12.6, max=score0, /记录当前最慢成绩 min=score
7、0; /记录当前最快成绩 int len=sizeof(score)/sizeof(double);/计算数组大小 for(int i=1;imax) max=scorei; else if(scoreimin) min=scorei; cout“最快成绩:“min“秒,最慢成绩:“max“秒n“; ,17,8.2 多维数组的定义、初始化和使用,1二维数组的定义 数据类型 数组名常量表达式1常量表达式2 例: int a34; float data44;,18,理解二维数组,二维数组可以看作一种特殊的一维数组,它的每个元素又是一个一维数组。 二维数组在内存中的存储:按行存放。,19,2.二维数
8、组的使用,引用数组元素的一般形式: 数组名行标列标 访问二维数组的每个元素,一般通过二重循环。 例如: int x23; for(int i=0;i2;i+) for(int j=0;j3;j+) xij=i*3+j+1;,20,3.二维数组的初始化,分行给二维数组赋值。 int a23=1,2,3,4,5,6; 去掉行的界限赋初值。 int a23=1,2,3,4,5,6; 如果对数组的全部元素都赋初值可以省略第一维的大小。 int a3=1,2,3,4,5,6; 也可只对部分元素赋初值而省略第一维大小,但应分行赋初值。 int b4=3,3,3,1,3;,21,4.二维数组应用举例,例8.
9、3 某超市有4个连锁店,定义二维数组存放各店2006年各个季度的销售额,计算各店一年的销售总额。 #include void main() double sales45=0;,22,for(int i=0;isalesij; salesi4+=salesij; cout“一季度t二季度t三季度t四季度t总额n“; for(i=0;i4;i+,coutendl) for(int j=0;j5;j+) coutsalesijt; ,23,8.3 数组作为函数参数,1数组元素作为函数的实参 若函数的形参是普通变量,则调用该函数时可以用数组元素做实参,参数的结合属于按值传递。 例8.5 数组元素作为函
10、数的实参。 #include inline int square(int x) return x*x; ,24,void main( ) int a52,i; for(i=0;i5;i+) ai0=i+1; ai1=square(ai0); /数组元素做square函数的实参 for(i=0;i5;i+) coutai0tai1n; ,25,2一维数组作为函数的参数,数组名代表该数组所占内存的起始位置值。 若一维数组做函数的形参,则调用该函数时,相应的实参用数组名。 用数组名作函数实参时,传递给形参的是实参数组所占内存的起始位置值,这样两个数组就合用实参数组的内存单元。,mul函数中,main
11、函数中,合用内存,26,例8.6 设计一个函数,完成数与向量的乘法运算。,#include void mul(int a,int size,int n) for(int i=0;isize;i+) ai*=n; void main( ) int i,x8=1,2,3,4,5,6,7,8; for(i=0;i8;i+) coutxit; coutendl; mul(x,8,2); for(i=0;i8;i+) coutxit; ,27,例8.7 设计一个函数,计算一维整型数组元素总和。,#include int sum(int a,int size)/size为形参数组大小 int total=
12、0; /存放总和,置初值0 for(int i=0;isize;i+)/逐个访问元素 total+=ai; /累加 return total; void main(void) int a=1,2,3,4,5,6,7,8,9,10,b=78,90,98,76,82; cout“数组a的元素之和:“sum(a,sizeof(a)/4)endl; cout“数组b的元素之和:“sum(b,sizeof(b)/4)endl; ,28,3二维数组作为函数的参数,void Transpose(int a4,int n) for(int i=0;in;i+) for(int j=i;j4;j+) int t
13、=aij; aij=aji; aji=t; ,例8.8 设计程序,将一个4行4列的二维数组a中行和列元素互换。,应明确指明列数,此处指定行数无效,需另设参数指定行数,29,8.4 字符数组,字符数组:元素是字符的数组。 字符数组初始化: char s13=c,a,r; char s24=c,a,r,0; char s2=“car”;/字符串后自动加0 char s2=“car”; /字符串后自动加0 0:字符串字符串结束标志。主要用于字符串的处理和输出。,30,字符数组的输入和输出:可整体进行。 char s420; cins4; /输入一个字符串存入s4数组 couts4; /输出s4数组中
14、存放的字符串 运行时若输入: Jiangsu China 则输出为: Jiangsu 而不是 Jiangsu China 注意: cin输入时,若遇空白符,则认为字符串结束。 输出时,若遇字符0,则认为字符串结束。,31,函数cin.getline():用于输入包含空白符的字符串。 第一个参数:字符数组名; 第二个参数:允许输入的最多字符个数。 例8.9 使用函数cin.getline()实现字符串的输入。 #include void main(void) char str51; cout“输入一行字符串:“; cin.getline(str,50); cout“str=“strn; ,32,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组
链接地址:https://www.31doc.com/p-2578715.html