您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C++语言程序设计第十讲
在IE浏览器的“工具”菜单中勾选上“兼容性视图”一维数组的使用•定义:inta[11];•引用:•存储结构:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a[10]顺序并且连续存储•初始化intb[5]={1,2,3,4,5};intb[5]={1};intb[]={1,2,3,4,5};intb[5]={1,0,0,0,0};等价于:等价于:intb[5]={1,2,3,4,5};intb[5]={0};intb[5]={0,0,0,0,0};等价于:只能引用单个的数组元素,不能一次引用整个数组。a[0]a[1]a[10]…没有a[11]一维数组的输入和输出例1:将n个数据输入到一个数组中,并按逆序输出。#includeiostream.hvoidmain(){inta[50],i,n;cinn;for(i=0;in;i++)cina[i];for(i=n-1;i=0;i--)couta[i];coutendl;}找最大值和最小值例2:输入n个数,找其中的最大值与最小值。#includeiostream.hvoidmain(){inta[50],i,n,di,xi;cinn;for(i=0;in;i++)cina[i];di=0;for(i=1;in;i++)if(a[di]a[i])di=i;xi=0;for(i=1;in;i++)if(a[xi]a[i])xi=i;couta[di]a[xi]endl;}例3:查找一个数是否在某数组中出现。•顺序查找法设数组为a,待查找的数为x把x与数组a中的元素从头到尾一一进行比较输入n,a,xflag=0flag:标志1:查到0:没查到i=0inflag==0a[i]==xTflag=1Fi++i:数组元素的下标查找#includeiostream.hvoidmain(){inta[50],i,n,x,flag;cinn;for(i=0;in;i++)cina[i];cinx;while(in&&flag==0)if(a[i]==x)flag=1;elsei++;if(flag)coutYES:;elsecoutNO;}flag=0;i=0;&&flag==1TyesFnoi;例4:将任意n个数由大到小排序。排序#includeiostream.hvoidmain(){inti,j,temp,a[11];for(i=1;i=10;i++)cina[i];for(i=1;i10;i++)for(j=i+1;j=10;j++)if(a[i]a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}for(i=1;i=10;i++)couta[i];}#includeiostream.hvoidmain(){inta[100],i,j,n,di,temp;cinn;for(i=0;in;i++)cina[i];for(i=0;in-1;i++)di=i;for(j=i+1;jn;j++)if(a[di]a[j])di=j;if(i!=di){temp=a[i];a[i]=a[di];a[di]=temp;}for(i=0;i=n-1;i++)couta[i];}{选择排序法}#includeiostream.hvoidmain(){inta[100],i,j,n,temp;cinn;for(i=0;in;i++)cina[i];for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}for(i=0;i=n-1;i++)couta[i];}384213842138421348213428134218第一趟34218342183241832148第二趟321482314821348第三趟2134812348第四趟a[1]a[2]a[3]a[4]a[5]j=1to4j=1to3j=1to2j=1to1由小到大排序#includestdio.hvoidmain(){inta[50],n,i,j,temp;scanf(%d,&n);for(i=1;i=n;i++)scanf(%d,&a[i]);for(i=1;in;i++)for(j=1;j=n-i;j++)if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=1;i=n;i++)printf(%5d,a[i]);}例5:输入任意n个数,将其中能被5整除的数组成一个新的数组。举例3106525715ab01234561052515mmmmm#includeiostream.hvoidmain(){inta[50],b[50],n,m,i;cinn;for(i=0;in;i++)cina[i];m=0;for(i=0;in;i++)if(a[i]%5==0){b[m]=a[i];m++;}for(i=0;im;i++)coutb[i];}二维数组的使用类型名数组名[整型常量1][整型常量2];例如:inta[3][4];定义一个二维数组a,3行a[0]a[0]•数组元素的引用•数组的定义4列,共12个整型元素a[0]a[0]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3][0][1][2][3]数组名[行下标][列下标]行下标的合理取值范围是0~行数-1列下标的合理取值范围是0~列数-1注意:元素下标不能越界。行数列数二维数组的使用•存储结构a[0][0]数组aa[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]按行存储a[0]a[0]a[0]a[0]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3][0][1][2][3]二维数组的分行初始化例inta[2][3]={{1,2},{4}};例inta[][3]={{1,2},{4}};部分初始化a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]120400行长度可以省略例inta[2][3]={{1,2,3},{4,5,6}};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456全部初始化a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]120400按存储顺序初始化例inta[2][3]={1,2,4};例inta[2][3]={1,2,3,4,5,6};全部初始化部分初始化例inta[][3]={1,2,3,4,5};行长度可以省略a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]124000a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123450多维数组例如:intc[2][3][4];定义一个三维数组c。第一个下标的取值范围为:0~1共有24个整型元素,c[1][0][3]就是该数组中的一个元素。第二个下标的取值范围为:0~2第三个下标的取值范围为:0~3c[0][0][0]c[0][0][1]c[0][0][2]c[0][0][3]c[0][1][0]c[0][1][1]c[0][1][2]c[0][1][3]c[0][2][0]c[0][2][1]c[0][2][2]c[0][2][3]c[1][0][0]c[1][0][1]c[1][0][2]c[1][0][3]c[1][1][0]c[1][1][1]c[1][1][2]c[1][1][3]c[1][2][0]c[1][2][1]c[1][2][2]c[1][2][3]多维数组:最右面的下标变化最快10974683123351□0□9□74□6□8□312□3□3□5□□1□□0□□9□□7□□4□□6□□8□□3□12□□3□□3□□5二维数组的输入和输出例6:将一个3×4矩阵输入到数组中并按行输出。#includestdio.hvoidmain(){inta[3][4],i,j;for(i=0;i3;i++)for(j=0;j4;j++)scanf(%d,&a[i][j]);for(i=0;i3;i++){for(j=0;j4;j++)printf(%3d,a[i][j]);printf(\n);}}二维数组可看作一个矩阵列行a[i][j]:i表示元素所在1349852352467621第一行第二列第4行第3列a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]a[3][0]a[3][1]a[3][2]a[3][3]a[3][2]次对角线j表示元素所在主对角线矩阵的第一行:for(j=0;j3;j++)couta[0][j];矩阵a[3][3]for(i=0;i3;i++)couta[i][1];for(k=0;k3;k++)couta[k][k];for(k=0;k3;k++)couta[k][2-k];矩阵的第二列:矩阵的主对角线:矩阵的次对角线:123456789012012for(i=0;i3;i++){for(j=0;j=i;j++)printf(%3d,a[i][j]);printf(\n);}123456789012012for(i=0;i3;i++){for(j=0;ji;j++)printf();for(j=i;j=2;j++)printf(%3d,a[i][j]);printf(\n);}矩阵的下三角:矩阵a[3][3]矩阵的上三角:三个空格例7:将二维数组行列元素互换,存到另一个数组中a=123456b=142536举例#includeiostream.h#includeiomanip.hvoidmain(){inta[50][50],b[50][50];intm,n,i,j;cinmn;for(i=0;im;i++)for(j=0;jn;j++)cina[i][j];for(i=0;in;i++)for(j=0;jm;j++)b[i][j]=a[j][i];for(i=0;in;i++){for(j=0;jm;j++)coutsetw(3)b[i][j];coutendl;}}矩阵的和运算:123456789+321654987=444101010161616两个矩阵对应元素相加,得到新的矩阵1*3+2*6+3*9123456789×321654987=矩阵的积运算:?????????i行上的元素分别与j列上的元素相乘后的累加和矩阵的运算#includestdio.hvoidmain(){inta[50][50],m,n,i,j,row,column,max;cinmn;for(i=0;im;i++)for(j=0;jn;j++)scanf(%d,&a[i][j]);max=a[0][0];for(i=0;im;i++)for(j=0;jn;j++)if(maxa[i][j]){max=a[i][j];row=i;column=j;}printf(max=%d,row=%d,column=%d,max,row,column);}
本文标题:C++语言程序设计第十讲
链接地址:https://www.777doc.com/doc-3263007 .html