C++矩阵的对角线之和

下面我会围绕奇数型矩阵和偶数型矩阵来展开。

什么是奇数型矩阵?

eg.a[3][3]、a[5][5]、a[7][7]、a[9][9]…

什么是偶数型矩阵?

eg.a[4][4]、a[6][6]、a[8][8]、a[10][10]…

奇数型矩阵实战

Question1:现有三行三列的二维数组int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};,编写程序实现计算对角线元素之和。

我给大家写在纸上,大家来一起观察。

在这里插入图片描述
你会发现,奇数型矩阵(a[3][3])的对角线上的数全是奇数,(你还可以拿张纸自行试一下a[5][5]、a[7][7]、a[9][9]…)那么我们可以利用奇数取2余1的或不等于1的特点来编写程序。

#include <stdio.h>
int main()
{
    int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
    int i,j;
    int sum=0;
    for(i=0;i<3;i++)
    {
       for(j=0;j<3;j++){
           if(a[i][j]%2!=0)//a[i][j]代表对角线上的各个元素
           sum+=a[i][j];//符合条件的累加
       }
    }
    printf("对角线元素之和是:%d\n",sum);
    return 0;    
}

笔算结果应该是:1+5+9+3+5+7=30?

可我们输出以后是什么?
在这里插入图片描述
哪里有问题?

你会发现矩阵的C位加了两遍,谁在C位?一看小丑竟是5(wo)自己。

在这里插入图片描述
所以说按照多维数组的方法来遍历矩阵,计算对角线元素的时候他是不会重复的,因为数组取得是具体的位置,一个萝卜一个坑,不会出岔子。

偶数型矩阵实战

Question2:现有三行三列的二维数组 int wolf[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};,编写程序实现计算对角线元素之和。

这是个偶数矩阵,我们还是来画图分析。

在这里插入图片描述
有什么特征?

拿到这道题,我想都没想“拿来主义”,但是一分析好像不行,因为偶数矩阵的对角线有偶数、也有奇数,咋办捏?

在这里插入图片描述
同志们,不要忘了数组的特点-----------位置

观察他们的位置

在这里插入图片描述
上面是i=j
下面是i+j=4-1而且行是递增的,列是递减的。

代码:

#include <stdio.h>
int main()
{
    int wolf[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    int i,j;
    int sum=0;
	int left=0,right=0;
    for(i=0;i<4;i++)
    {
       for(j=0;j<4;j++){
           if(i==j)//
           left+=wolf[i][j];
       }
    }
	for(i=0;i<4;i++)
	{
		for(j=4;j>=0;j--){
		if(i+j==3)
		right+=wolf[i][j];}
	}
	sum=(right+left);
    printf("对角线元素之和是:%d\n",sum);
    return 0;    
}

输出结果:
在这里插入图片描述
为什么有的梦可以记住,而有的梦不可以?

如果醒过来能记住梦,说明你是在REM阶段醒来的

什么是REM阶段呢?

也就是眼珠子转的比较快的时候你醒啦。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值