C++数组的应用课件

上传人:尘*** 文档编号:242940057 上传时间:2024-09-12 格式:PPT 页数:58 大小:131KB
返回 下载 相关 举报
C++数组的应用课件_第1页
第1页 / 共58页
C++数组的应用课件_第2页
第2页 / 共58页
C++数组的应用课件_第3页
第3页 / 共58页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,*,*,2024/9/12,1,第,4,章 数组的应用,数组的定义,数组,:,同类型变量或对象的集合称为数组。,数组的定义格式如下:,类型 数组名,下标表达式,1,下标表达式,2,其中:数组名为一标识符;,下标表达式为常量表达式,不能是变量表达式。,2024/9/12,2,有一个下标表达式,则该数组叫做一维数组;,有两个下标表达式,则该数组叫做两维数组;,有,N,个下标表达式,则该数组叫做,N,维数组。,数组中的变量称为,数组元素,,由于数组中每个元素都有下标,因此数组元素也称为,下标变量,;,数组下标取值从,0,开始,使用数组时下标不能越界;,同一数组的所有数组元素在内存中占用一片连续的存储单元。,2024/9/12,3,4.1,数值型数组应用,一维数组的定义格式:,类型 数组名,下标表达式,如:,int array5,;,定义了一个名叫,array,的一维整型数组,其数组元素分别为:,array0,array1,array2,array3,array4,。,2024/9/12,4,一维数组元素的存放顺序:,按下标顺序存放在连续的内存单元中。,array5:,array0,array1,array2,array3,array4,2024/9/12,5,一维数组的初始化:,初始值用花扩号扩起,数组元素按存储顺序对应取值。,如:,int array5=1,2,3,4,5, b5=5,6,7;,对,array,的,5,个元素赋了初值,,b,数组中,b0,b1,b2,三个元素分别赋了初值,5,6,7,而,b3,b4,则为零。,数值型数组在定义时若对其中某些元素赋了初值,则其它未赋初值的元素将自动设置为,0,。,2024/9/12,6,一维数值型数组的赋值和输入输出:,数组名是数组首元素的内存地址,是一个常量,不能被赋值。,一维数值型数组,:,要对各数组元素操作,不能直接用数组名操作。,输入数组各数组元素的值:,int j,a5;,for(j=0;jaj;,直接用,cina;,错误。,2024/9/12,7,输出数组各数组元素的值:,int a5=1,2,3,4,5;,couta;/,输出内容错,输出是一地址,int a5=1,2,3,4,5;,for(j=0;j5;j+),coutajaj;,for(j=0;j5;j+),coutaj ;,2024/9/12,9,一维数组应用举例,例,4.2,、对一个大小为,100,的一维整型数组各元素赋值,2,#include,using namespace std;,void main(), int array100;,for(int j=0;j100;j+),arrayj=2;,coutarrayj ;,if(j+1)%10=0)coutn;,for(i=0;inumisi;,for(i=0;in;i+) sum=sum+si;,ave=sum/n;,for(i=0;iave)coutnumisiendl;,2024/9/12,12,例,4.4,、求,Fibonacci,数列前,20,项。,思路分析:,Fibonacci,数列前,20,项的值用一个一维数组,f,表示,其中前两项的值分别是,1,。因此,在定义一维数组,f,时,给前两个数组元素赋初始值,1,。在输出结果时,每行输出,5,个数。,2024/9/12,13,源程序清单:,#include,#include ,using namespace std;,void main(void), int i,f20=1,1;,for(i=2;i20;i+),fi=fi-2+fi-1;,for(i=0;i20;i+), if(i%5=0)coutendl;,coutsetw(5)fi;,2024/9/12,14,例,4.5,、求一维数组中最大、最小元素,#include,using namespace std;,void main(),double array10=68.5,87.4,83.1,98.5,93.5,76.9,98.1,62.4,54.6,91.7,big,small;,big=small=array0;,for(int i=0;ibig) big=arrayi;,if(arrayismall) small=arrayi;,coutbig=big,small=smallendl;,2024/9/12,15,例,4.6,、利用折半查找法,在按从小到大顺序排列的十个数据中查找是否有键盘输入的数值,x。,#include,using namespace std;,void main(void),int a10,i,bot=0,mid,top=9,x,pos;,coutPlease input ten numbers,(from small to big):ai;,coutPlease input the number to queue:x;,2024/9/12,16,while(botx),top=mid-1;,else,bot=mid+1;,if(bottop),coutNo this number.;,else,coutx is at the pos+1n;,coutInput numbers:endl;,2024/9/12,19,for(i=1;iai;,for(i=1;i=n-1;i+),for(j=i+1;jaj), t=ai;ai=aj;aj=t;,coutThe sorted numbers is:endl;,for(j=1;j=n;j+),coutA(i+1),则交换它们的位置,否则不交换。,经过这样一次处理,称为,“,一趟冒泡,”,将最大值交换到,A(N),的位置,;(2),对剩下的,N-1,个元素,再两两进行比较,按同样规则交换它们的位置,经过,N-2,次比较,将次最大值交换到,A(N-1),的位置,;(3),如法炮制,经过,N-1,趟的,“,冒泡处理,”,每趟进行,N-i,次的比较,全部数列有序。,2024/9/12,21,2024/9/12,22,源程序清单:,#include,using namespace std;,void main(void), const int N=20;,int aN+1;,int i,j,t,n;,cinn;,coutInput numbers:endl;,2024/9/12,23,for(i=1;iai;,for(i=1;i=n-1;i+),for(j=1;jaj+1), t=aj;aj=aj+1;aj+1=t;,coutThe sorted numbers is:endl;,for(i=1;i=n;i+),coutai;,2024/9/12,24,变形程序,:,#include,using namespace std;,void main(),int i,j;,int list16=503, 87, 512, 61,908, 170, 897, 275,653, 426, 154, 509, 612, 677, 765, 703;,2024/9/12,25,for(i=0; ii; j=j-1),if(listj-1listj),int tmp = listj-1;,listj-1 = listj;,listj = tmp;,cout The result is : endl;,for(i=0;i16;i+)cout listi ;,cout endl;,2024/9/12,26,二维数组的定义格式:,类型 数组名,下标表达式,1 ,下标表达式,2,如:,int array24,;,定义了一个名叫,array,的二维整型数组,其数组元素分别为:,array00, array01,array02, array03,,,array10,,,array11,,,array12,,,array13,2024/9/12,27,二维数组元素的存放顺序:,array00,array01,array02,array03,array10,array11,array12,array13,2024/9/12,28,二维数组的初始化:,初始值用花扩号扩起,数组元素按存储顺序对应取值。,int mx34=1,2,3,4,5,6,7,8,9,10,11,12;,或:,int mx34=,1,2,3,4,5,6,7,8,9,10,11,12;,各数组元素取值如下:,mx00=1,mx01=2,mx02=3,mx03=4,mx10=5,mx11=6,mx12=7,mx13=8,mx20=9,mx21=10,mx22=11,mx23=12,2024/9/12,29,可以对部分元素赋初值,int d23=16,10,4;,d00=16,d01=10,d10=4,其它赋初值零,但,int d23=16,10,4;,则是,d00=16,d01=10,d02=4,与上面不一样,数值型数组在定义时若对部分元素赋初值,则其它未赋初值的元素将自动设置为,0,。,2024/9/12,30,二维数组的赋值和输入输出,二维数值型数组,:,要对各数组元素操作,不能直接用数组名操作。,二维数值型数组有两个下标,要用两个控制变量来控制其数组元素的操作(包括输入、输出操作),例,4.8,、从键盘输入一个二维整型数组各元素的值,并将其值输出。,程序如下:,2024/9/12,31,#include,using namespace std;,void main(),int i,j,array23;,for(i=0;i2;i+),for(j=0;jarrayij;,for(i=0;i2;i+),for(j=0;j3;j+),coutarrayij ;,coutendl;,2024/9/12,32,二维数组应用举例,例,4.9,、编程实现两个,3X3,的矩阵相加。,#include,using namespace std;,void main(),int i,j;,double a33,b33,c33;,for(i=0;i3;i+),for(j=0;jaij;,2024/9/12,33,for(i=0;i3;i+),for(j=0;jbij;,coutfixed;,cout.precision(2);,for(i=0;i3;i+),for(j=0;j3;j+),cij=aij+bij;,coutcij ;,coutendl;,2024/9/12,34,例,4.10,、编程求,N1XN2,整型矩阵中的最大元素及其所在的行和列的位置。,#include,using namespace std;,void main(),const int N1=3,N2=4;,int aN1N2,max,i,j,row(0),column(0);,for(i=0;iN1;i+),for(j=0;jaij;,2024/9/12,35,max=a00;,for(i=0;iN1;i+),for(j=0;jN2;j+),if(maxaij),max=aij;row=i;column=j;,coutmax=maxtrow=row,tcolumn=columnendl;,2024/9/12,36,例,4.11,、编程输出以下杨辉三角形。,1,1 1,1 2 1,1 3 3 1,1 4 6 4 1,1 5 10 10 5 1,1 6 15 20 15 6 1,1 7 21 35 35 21 7 1,1 8 28 56 70 56 28 8 1,1 9 36 84 126 126 84 36 9 1,2024/9/12,37,思路分析:,用一个二维数组存放杨辉三角形。以上杨辉三角形是一个,10*10,矩阵的下半三角(包含对角线)。矩阵的第一列上元素和对角线上元素的值都为,1,。此外,三角形中第,i,行上第,2,列到第,i-1,列上的元素值与上一行的元素有如下关系:,aij=ai-1j-1+ai-1j,2024/9/12,38,源程序清单:,#include,#include,using namespace std;,void main( ), int i,j,a1111;,for(i=1,i=10;i+), ai1=1; aii=1;,for(i=3;i=10;i+),for(j=2;j=i-1;j+),aij=ai-1j-1+ai-1j;,2024/9/12,39,cout,“,YAN HUI Triangle:,”,endl;,for(i=1;i=10;i+), for(j=1;j=i;j+),coutsetw(4)aij;,couta;/,输入,1234/,后面自动加,0,coutaendl;/,输出,1234,coutbaj;/,输入,1234,a4=0;/ a4=NULL; coutaendl;/,输出,1234,for(j=0;j5;j+)cout,字符串,2,,函数值为一正整数。,如果字符串,1,字符串,2,,函数值为一负整数。,例如:,char c120=,“,abcdefg,”,,,c220=,“,abcdefffg,”,;,strcmp(c1,c2),执行以上操作,得到一个正整数。,int j;,char weekday7=“MONDAY”,;,j=strcmp(weekday,MONDAY); / j=0,j=strcmp(weekday,MANDAY); / j=1,j=strcmp(weekday,MaNDAY); / j=-1,2024/9/12,51, strlen,函数,调用方法:,strlen(,字符数组或字符串常量,),功能:测定字符串常量或字符串的长度。,例如:,strlen(,“,a b c,”,),执行以上操作,得到字符串长度值,5,。,strwr,函数,调用方法:,strwr(,字符数组或字符串常量,),功能:将字符数组中的字符串或字符串常量中的大写字母转换为小写字母。,例如:,strwr(,“,A B c,”,),执行以上操作,得到结果是字符串:,a b c,。,2024/9/12,52, strupr,函数,调用方法:,strupr(,字符数组或字符串常量,),功能:将字符数组中的字符串或字符串常量中的小写字母转换为大写字母。,例如:,strupr(,“,A b c,”,),执行以上操作,得到结果是字符串:,A B C,。,9,getline,函数,调用方法:,cin.getline(,字符数组名,St,字符个数,N,结束符,);,功能:一次连续读入多个字符(可以包括空格),直到读满,N-1,个,或遇到指定的结束符(缺省换行)。读入的字符串存放于字符数组,St,中。读取但不存储结束符。,2024/9/12,53,10,get,函数,调用方法:,cin.get(,字符数组名,St,字符个数,N,结束符,);,功能:一次连续读入多个字符(可以包括空格),直到读满,N-1,个,或遇到指定的结束符(缺省换行)。读入的字符串存放于字符数组,St,中。既不读取也不存储结束符。,2024/9/12,54,#include,void main(),char a20,b20;,cin.getline(a,5,);/,提取分界符,cin.getline(b,5,n);,coutaendl;coutbendl;,输入:输出:,12345,67891234,5, 67,123,456789123,4567,2024/9/12,55,#include,void main(),char a20,b20;,cin.get (a,5,);/,不提取分界符,cin.get (b,5,n);,coutaendl;coutbendl;,输入:输出:,12345,67891234,5, 67,123,456789123, 456,2024/9/12,56,cin.get,的其它形式:,cin.get( ):,读一个字符,并返回其值。,cin.get(ch):,读一个字符,并将其值写入,ch,中。,cin.get(st,N):,结束符为缺省 ,n,cin.getline,没有前两种形式。,#include,void main(),char a,b;,a=cin.get();,cin.get(b);,couta bendl;,输入:,abcdef,输出:,a b,2024/9/12,57,二维字符数组,二维数组的初始化:,二维字符数组可用来存放多个字符串,.,二维字符数组中的每一行代表一个一维数组,因此它的初始化跟一维数组类似,如:,char x24=abc,def;,或,char x 4=abc,def;,其中二维数组的第一个下标值由系统根据初始化时的实际字符串个数或字符个数自动确定。但是第二个下标一定要有确定值,这一规定也适用于其它类型的二维数组的定义。,2024/9/12,58,二维数组的赋值和输入输出,二维字符型数组,:,不能直接用数组名操作,但可将一行当作一个一维数组来使用。,如:,char x24=abc,def;,for(j=0;j2;j+),coutxjendl;,输出:,abc,def,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!