
数组的概念可以把数组理解为由很多同类型的数组成的组。一维数组定义当我们已经知道数组的元素可以直接定义并赋值//数据类型 数组名[] {元素 ... }; int arr[]{1,2,3,4};当我们还不知道数组内的元素可以先定义一个空数组给定长度不赋值即可//数据类型 数组名[长度] ; int arr[5];数组元素使用编号从0开始//数组名[编号] arr[2]数组长度获得sizeof( ) 求字节运算符sizeof(int) 求int类型数值的字节数sizeof(arr[0]) 求arr数组的第一个数据的字节数sizeof(arr) 求arr整个数组所占的字节数sizeof(arr)/sizeof(arr[0]) 求arr数组的元素个数遍历遍历概念按照某种规律依次访问结点中的每一个数据且每个结点只访问一次遍历输入从最开始的下标开始到最后一个下标结束依次输入数据存到数组的下标位置for(int bh开始下标;bh到结束下标;bh变化){ cinarr[bh]; } 例如 for(int bh0;bh4;bh){ cinarr[bh]; } for(int bh4;bh0;bh--){ cinarr[bh]; }遍历输出从最开始的下标开始到最后一个下标结束依次输出数据存到数组的下标位置for(int bh开始下标;bh到结束下标;bh变化){ coutarr[bh] ; } for(int bh0;bh4;bh){ coutarr[bh] ; } for(int bh4;bh0;bh--){ coutarr[bh] ; }遍历判断从最开始的下标开始到最后一个下标结束依次输出符合要求的数据存到数组的下标位置for(int bh开始下标;bh到结束下标;xb变化){ if(arr[bh]做什么判断){ 如果满足做什么事; } } for(int bh0;bh4;bh){ if(arr[bh]60){ coutarr[bh] ; } } for(int bh4;bh0;bh--){ if(arr[bh]60){ coutarr[bh] ; } }练习一数组基本输入输出输入5个数到数组再输出这5个数#include bits/stdc.h using namespace std; int main(){ int arr[5]; for(int xb0;xb4;xb){ cinarr[xb]; } for(int xb0;xb4;xb){ coutarr[xb] ; } return 0; }练习二数组基本输入输出输入5个数到数组然后输出所有的偶数#include bits/stdc.h using namespace std; int main(){ int arr[5]; for(int xb0;xb4;xb){ cinarr[xb]; } for(int xb0;xb4;xb){ if(arr[xb]%20){ coutarr[xb] ; } } return 0; }数组的插入遍历输入n个数在第insert位置插入insertNum这个数#include bits/stdc.h using namespace std; int main(){ //输入长度n并定义数组预留100个空间并遍历输入 int n; cinn; int arr[100]; for(int i0;in;i){ cinarr[i]; } //输入要插入的位置和插入的数字 //如果插入的位置比长度大很多那么插入的数字放在队尾 int insertPos,insertNum; cininsertPosinsertNum; if(insertPosn){ arr[n]insertNum; } //将插入的将其从后往前以此让位 for(int in-1;iinsertPos;i--){ arr[i1]arr[i]; } //在插入的位置插入数字 arr[insertPos]insertNum; //遍历输出 for(int i0;in1;i){ coutarr[i] ; } return 0; }遍历输入n个数将队尾的数字插入到insert这个位置#include bits/stdc.h using namespace std; int main(){ //输入长度n并定义数组预留100个空间并遍历输入 int n; cinn; int arr[100]; for(int i0;in;i){ cinarr[i]; } int tailarr[n-1]; //输入要插入的位置 //如果插入的位置比长度大很多那么插入的数字放在队尾 int insertPos; cininsertPos; //将插入的将其从后往前以此让位 for(int in-1;iinsertPos;i--){ arr[i1]arr[i]; } //在插入的位置插入数字 arr[insertPos]tail; //遍历输出 for(int i0;in;i){ coutarr[i] ; } return 0; }数组的删除遍历输入n个数删除第delPosion位置的数#include bits/stdc.h using namespace std; int main(){ //输入长度n并定义数组预留100个空间并遍历输入 int n; cinn; int arr[100]; for(int i0;in;i){ cinarr[i]; } //输入要删除掉的位置 int deletePos; cindeletePos; //如果删除的位置超出总个数那么输出的个数为n个 //如果有要删除的位置那么输出的个数为n-1个 if(deletePosn){ for(int ideletePos;in;i){ arr[i]arr[i1]; } for(int i0;in-1;i){ coutarr[i] ; } }else{ for(int i0;in;i){ coutarr[i] ; } } return 0; }遍历输入n个数删除第deletNum这个数#include bits/stdc.h using namespace std; int main(){ //输入长度n并定义数组预留100个空间并遍历输入 int n; cinn; int arr[100]; for(int i0;in;i){ cinarr[i]; } //输入要删除掉的数字 int deleteNum,deletePos-1; cindeleteNum; //在数组内遍历找有没有要删除的这个数字 //如果有保存他的下标 for(int i0;in;i){ if(arr[i]deleteNum){ deletePosi; } } //如果下标不为-1说明找到数字进行删除操作 //如果下标为-1说明没有找到数字不进行删除操作 if(deletePos!-1){ for(int ideletePos;in;i){ arr[i]arr[i1]; } for(int i0;in-1;i){ coutarr[i] ; } }else{ for(int i0;in;i){ coutarr[i] ; } } return 0; }字符串与字符数组字符串其实就是由字符组成的串可以理解为字符串为字符数组二维数组概念二维数组的定义与一维数组相似也需要指定数组元素的类型。不同的是二维数组需要两个大小参数分别表示数组的行数和单元格数。定义当我们已经知道数组的元素可以直接定义并赋值//数据类型 数组名[][] { {元素元素 ...} , {元素元素 ...} , {元素元素 ...} }; int arr[][]{ {1,2,3,4}, {11,22,33,44}, {111,222,333,444} };当我们还不知道数组内的元素可以先定义一个空数组给定行和列的长度不赋值即可//数据类型 数组名[行长度][列长度] ; int arr[5][5];遍历和一维数组一样二维数组的遍历也是从头到尾以此访问的。行-列列列-行-列列列.......#include bits/stdc.h using namespace std; int main(){ //定义行和列的长度并定义二维数组 int h,l; cinhl; int arr[100][100]; //遍历输入这个二维数组 for(int hang0;hangh;hang){ for(int lie0;liel;lie){ cinarr[hang][lie]; } } //遍历输出这个二维数组 for(int hang0;hangh;hang){ for(int lie0;liel;lie){ coutarr[hang][lie] ; } coutendl; } return 0; }易错点int arr[4][4]{ {1,2,3,4} {1,2,3,4} {1,2,3,4} {1,2,3,4} {1,2,3,4} }; 报错too many int arr[4][4]{ {1,2,3,4,5} {1,2,3,4,5} {1,2,3,4,5} {1,2,3,4,5} }; 报错too many int arr[4][4]{ 1,2,3,1,2,3,1,2,3,1,2,3 }; 输出 1 2 3 1 2 3 1 2 3 1 2 3 0 0 0 0int arr[4][4]{ {1,2,3} {1,2,3} {1,2,3} {1,2,3} }; 输出 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0int arr[4][4]{ {1,2,3} {1,2,3} {1,2,3} }; 输出 1 2 3 0 1 2 3 0 1 2 3 0 0 0 0 0练习一二维数组基本输入输出输入两个数表示行和列并创建二维数组后遍历输入输出练习二求二维数组和输入m行n列的二维数组输出所有数的和输入 2 31 2 3 4 5 6输出 21#include bits/stdc.h using namespace std; int main(){ int sum0; int n,m; cinnm; int arr[100][100]; for(int i0;in-1;i){ for(int j0;jm-1;j){ cinarr[i][j]; sumarr[i][j]; } } coutsum; return 0; }练习三求二维数组每行和输入m行n列的二维数组输出每行的和输入 2 31 2 3 4 5 6输出 6 15#include bits/stdc.h using namespace std; int main(){ int sum0; int n,m; cinnm; int arr[100][100]; for(int i0;in-1;i){ sum0; for(int j0;jm-1;j){ cinarr[i][j]; sumarr[i][j]; } coutsum ; } return 0; }练习四求二维数组每列和输入m行n列的二维数组输出每列的和输入 2 31 2 3 4 5 6输出 5 7 9#include bits/stdc.h using namespace std; int main(){ int n,m; cinnm; int arr[100][100]; for(int i0;in-1;i){ for(int j0;jm-1;j){ cinarr[i][j]; } } int sum0; for(int j0;jm-1;j){ sum0; for(int i0;in-1;i){ sumarr[i][j]; } coutsum ; } return 0; }练习五排成绩现在有一个25人班按照5*5的方式排队接下来输入每个学生的成绩80~100 则为A 60~79 则为B 0~59 则为C输出这个成绩矩阵例如输入 例如输出1 2 3 4 100 C C C C A24 60 80 79 100 C B A B A100 99 80 40 50 A A A C C13 50 70 80 60 C C B A B100 0 0 0 0 A C C C C#include bits/stdc.h using namespace std; int main(){ int chengji[5][5]; for(int hang0;hang5;hang){ for(int lie0;lie5;lie){ cinchengji[hang][lie]; } } for(int hang0;hang5;hang){ for(int lie0;lie5;lie){ if(chengji[hang][lie]80chengji[hang][lie]100){ coutA ; }else if(chengji[hang][lie]60chengji[hang][lie]79){ coutB ; }else if(chengji[hang][lie]0chengji[hang][lie]59){ coutC ; } } coutendl; } return 0; }练习六小组成绩现在有m*n名学生组成的班级班级以m行n列为座位假设所有座位都坐了学生并且每列的学生都是一个小组。现在输入每个学生的成绩0分~100分之间问每个小组中的平均分是多少平均分是否及格了例如输入 2 399 100 65 25 71 33输出 62 及格85.5 及格49 没及格#include bits/stdc.h using namespace std; int main(){ int n,m; cinnm; int arr[100][100]; for(int i0;in-1;i){ for(int j0;jm-1;j){ cinarr[i][j]; } } double sum0; for(int j0;jm-1;j){ sum0; for(int i0;in-1;i){ sumarr[i][j]; } coutsum/n ; if(sum/n60){ cout及格endl; }else{ cout没及格endl; } } return 0; }练习七一条龙现在有一个m*n的队形矩阵现在需要对这个矩阵进行一条龙式编号。输出这个编号输入案例3 4输出案例1 6 7 122 5 8 113 4 9 10#include iostream using namespace std; int main(){ int m,n; cinmn; int mat[100][100] {0}; int num 1; // 按列遍历偶数列从上到下0-2奇数列从下到上2-0 for (int j 0; j n; j){ if (j % 2 0){ for (int i 0; i m; i){ mat[i][j] num; num; } }else{ for (int i m-1; i 0; i--){ mat[i][j] num; num; } } } // 输出 for (int i 0; i m; i){ for (int j 0; j n; j){ cout mat[i][j] ; } cout endl; } return 0; }练习八字符一条龙一个方阵由A-Z a-z组成根据一条龙的排序顺序将其排列。输入m和n表示这个方阵的行列输出这个由字母组成方阵#include bits/stdc.h using namespace std; int main(){ int m,n; cinmn; char arr[100][100]; char ch A; for(int j0;jn;j){ if(j%20){ for(int i0;im;i){ arr[i][j]ch; ch; if(chZcha) cha; if(chz) chA; } } else{ for(int im-1;i0;i--){ arr[i][j]ch; ch; if(chZcha) cha; if(chz) chA; } } } for(int i0;im;i){ for(int j0;jn;j){ sdx coutarr[i][j] ; } coutendl; } return 0; }