数组是什么?
它是可以在内存中连续存储多个元素的结构,它所存储的所有元素必须属于相同类型,
声明和使用数组的基本格式是元素类型 数组名[元素个数] 比如int ages[3];
数组有一维数组,二维数组,多维数组
在我的理解多维数组就是数组的嵌套使用
举个简单的例子,
一维数组就是一排座位有几个人,二维数组就是一个教室有几排座位,一排座位有几个人,三维数组就是一个学校有几个教室,一个教室有几排座位,一排座位有几个人
一维数组中存储的是基本的元素,二维数组存储的是一维数组,三维数组存储的是一维数组
数组中的经典排序方式,冒泡排序
这个琢磨明白了就很容易,两两比较,大的就交换位置,直到最大的交换到最后,然后从头开始继续比较,一直比较到第二位,因为从第二位到最后一位大小确定了,第一位自然是最小的了
所以冒泡排序归结为一句话,N个数字来排队,两两比较小靠前,外层循环N-1(控制比较轮数)内层循环N-1-i(控制每轮比较次数,i为外层循环变量)
int nums[]={10,3,8,1,6}; int i,j,temp; //外层控制比较的轮数(5个数字比较4轮) for(i=0;i<4;i++){ //内层循环控制每轮比较的次数 for(j=0;j<4-i;j++){ if(nums[j]>nums[j+1]){//交换顺序 temp = nums[j]; nums[j]=nums[j+1]; nums[j+1]=temp; } } } printf("排序后的数字为:"); //利用循环遍历输出 for(i=0;i<5;i++){ printf("%d\t",nums[i]); } |
二维数组
- 二维数组可以看作是由一维数组的嵌套而构成的
二维数组: 一维数组中的值为一个数组.
声明: 数据类型 数组名[rowsize][colsize];
int nums[4][2];
声明并赋值:
int nums[4][2]={{10,11},{20,21),{30,31},{40,41}}; 正确
int nums[][2]={{10,11},{20,21),{30,31},{40,41}}; 正确
int nums[4][]={{10,11},{20,21),{30,31},{40,41}}; 错误
示例:声明一个三行三列的二维数组用于保持用户输入的整型数据,打印用户输入的数据并计算对角线之和
int nums[3][3]; int i,j,sum=0; //循环获取用户输入的数据,并将其数据保存到二维数组中 for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("请输入第%d行第%d列数据\n",i+1,j+1); scanf("%d",&nums[i][j]); } } //循环遍历二维数组的数据,并打印成矩形 for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%d\t",nums[i][j]); if(i==j){ sum+=nums[i][j]; } } printf("\n"); } printf("二维数组对角线之和为%d",sum); |