数组之二维数组

二维数组:

定义一个N行M列的二维数组:

T a[N][M];//T:类型名,如char,double,int等等。

                 //M,N:正整数,或值为正整数的常量表达式

  • 每一个元素都是一个类型为T的变量
  • NxM个元素在内存里是一个哎一个连续存放的。
  • 数组占用了一片连续的、大小总为NxMxsizeof(T)字节的存储空间。
  • 表达式“sizeof(a)”的值就是整个数组的体积,即NxMxsizeof(T)。

访问数组元素的方法:

       数组名[行下标][列下表] 

     eg:a[i][j]//访问第i行第j列

行下标和列下表都从0开始

二维数组的存放方式

数组T a[N][M] 每一行都有M个元素

第i行的元素就是 a[i][0]、a[i][1]......a[i][M-1]。同一行的元素,在内存中是连续存放的

第j列的元素是,a[0][j]、a[1][j]......a[N-1][j]。

a[0][0]是数组中地址最小的元素。如果a[0][0]存放在地址n,则a[0][0]存放在地址n,则a[i][j]存放地址就是

     n+i x M x sizeof(T)+j x sizeof(T)

二维数组的每一行,实际上都是一个一维数组。

a[0],a[1]都可以看做是一个一维数组的名字,可以直接当一维数组使用。

数组的遍历

#define ROW 20
#define COL 30
int a[ROW][COL];
for( int i=0;i<ROW;++i){
	for( int j=0;j<COL;++j)
	cout<<a[i][j]<<" ";
	cout<<endl;
} 

矩阵的乘法

#include<iostream>
using namespace std;
#define ROWS 8
#define COLS 8
int a[ROWS][COLS];
int b[ROWS][COLS];
int c[ROWS][COLS];//结果
int main()
{
	int m,n,p,q;
	cin>>m>>n;
	for(int i=0;i<m;++i)//读入a矩阵
	for(int j=0;j<n;++j)
	cin>>a[i][j];
	cin>>p>>q;
	for(int i;i<p;++i)//读入b矩阵
	for(int j=0;j<q;++j)
	cin>>b[i][j]; 
	for(int i=0;i<m;++i){
		for(int j=0;j<q;++j){
			c[i][j]=0;
			for(int k=0;k<n;++k)
			c[i][j]+=a[i][j]*b[k][j];
		}
	}
	for(int i=0;i<m;++i){
		for(int j=0;j<q;++j){
			cout<<c[i][j]<<" ";
		}
		cout<<endl; 
	}
	return 0; 
 } 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值