二维数组及其规则

一维数组的局限性

在统计数据时,数据的量很大时,一维数组的限制就很明显:在统计五年内每个月的降水量数据总共需要60个元素,使用一维数组就显得非常笨拙,无论是创建一个包含了60个月的数组还是创建五个一年的数组。

处理这种数据包要经常使用数组的数组,即二维数组。主数组包含多个元素,每个元素均为内含多个元素的数组。案例的解决方法如下所示:

float rain[60];    //一维数组,60个月的数据集中在一起,元素查询非常繁琐
float rain[5][12]    //二维数组,主函数包含5个主元素,每个主元素中包含12个元素 
                     //float——数据类型
                     //rain——数组名
                     //[5]——rain是一个内含5个元素的数组
                     //[12]——每个元素都是一个内含12个float类型值的数组

 5个数组,从0开始,0~4依序排列

12个元素,从0开始,0~11依序排列

比如要提取4行10列的元素,则要输入printf("%.1f",rain[3][9]);

初始化

二维数组的初始化建立在初始化一维数组的基础上。初始化一维数组如下:

const ra[5]={1,2,3,4,5};    //一维数组初始化值

也就是说若rain每个元素是一个内含12个整型元素的数组,那么ra是 一个由5个数组成的数值列表,rain的初始化需要用逗号分隔数值列表:

int arr[2][5]={{10,11,12,13,14},{20,21,22,23,24}};      //二维数列初始化方案
int arr[2][5]={10,11,12,13,14,20,21,22,23,24};    //初始化时可以省略内部的花括号。只要保证数值正确,初始化结果就和列表相同。但若初始化数值不足,则需要按照顺序初始化,直到用完所有的值,后面没有被初始化的元素统一初始化为0:
int arr[2][5]={{10,11,12},{20}};    //初始化数值不足,则需要按照顺序初始化,直到用完所有的值,后面没有被初始化的元素统一初始化为0.
int arr[2][5]={0};    //全部清零、初始化为0

元素易位

/*
将一个二维数组的行和列元素互换,存到另一个二维数组中。

		arr_01[3][5]
   	列   0	1  2  3  4
行		
0		10 11 12 13 14 
1		20 21 22 23 24
2		30 31 32 33 34

		arr_02[5][3] 
	列   
行		0	1  2  
0		10 20 30
1		11 21 31
2		12 22 32
3		13 23 33
4		14 24 34
arr1[3][5]→arr2[5][3]
*/
#include<stdio.h>
int main()
{
	int arr1[3][5];		//定义数组 
	int i,j;			//i控制行,j控制列 
	int arr2[5][3];		//定义目标数组 
	for(i=0;i<3;i++)
	{
		for(j=0;j<5;j++)
		{
			arr1[i][j]=10*i+j;	//给数组各元素赋值 
		}
	}
	
	for(i=0;i<3;i++)
	{
		for(j=0;j<5;j++)
		{
			printf("arr[%d][%d]=%d\t",i,j,arr1[i][j]);	//输出初始数组 
		}
		printf("\n");
	}
	printf("\n");
	for(j=0;j<5;j++)
	{
		for(i=0;i<3;i++)
		{
			arr2[j][i]=arr1[i][j];		//用循环数组元素易位 
			printf("arr[%d][%d]=%d\t",j,i,arr2[j][i]);	//输出目标数组 
		}
		printf("\n");
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值