矩阵运算:读入 1 个正整数 n(1≤n≤6),再读入 n 阶方阵 a, 计算该矩阵除副对角线、 最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线

引入

矩阵运算:读入 1 个正整数 n(1≤n≤6),再读入 n 阶方阵 a,
计算该矩阵除副对角线、 最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。


分析

看到矩阵运算懵了,什么东西,网上只找到答案看不懂,我有倒推一波,这里就涉及到二维数组了,这里写一个二维数组与矩阵的对应关系

二维数组可以看作一个坐标轴(方阵)

int a[3][3];  第一3代表矩阵的横坐标,就是3排,第二个3代表坐标轴,也就是3纵

1 2 3		1的坐标就是a[0][0] 2的是[1][0] 3可以看作[2][0]  
2 1 3		2可以看作[0][1]... 
3 1 2 

题目要求我们输入n,这个n其实 就代表几排几纵
然后输入1个矩阵 
计算矩阵,他说不要最后一列和最后一行及左下角到右上角对角线值
	也就是说不要 横坐标等于n-1的那一排和纵坐标等于n-1的那一纵以及横坐标和纵坐标之和不等于n-1
	上面为例那个矩阵的和就是5 

扩展:主对角线就是横坐标与纵坐标相等、副对角线就是横坐标与纵坐标之和不等于n-1、外围元素要么行下标i == 0 或者 i == n-1


代码

#include<stdio.h> 
int main(void) { 

	/**
	矩阵运算:读入 1 个正整数 n(1≤n≤6),再读入 n 阶方阵 a,
	计算该矩阵除副对角线、 最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
	*/
	
	/**
	看到矩阵运算懵了,什么东西,网上只找到答案看不懂,我有倒推一波,这里就涉及到二维数组了,这里写一个二维数组与矩阵的对应关系
	
	二维数组可以看作一个坐标轴 
	
	int a[3][3];  第一3代表矩阵的横坐标,就是3排,第二个3代表坐标轴,也就是3纵
	
	1 2 3		1的坐标就是a[0][0] 2的是[1][0] 3可以看作[2][0]  
	2 1 3		2可以看作[0][1]... 
	3 1 2 
	
	题目要求我们输入n,这个n其实 就代表几排几纵
	然后输入1个矩阵 
	计算矩阵,他说不要最后一列和最后一行及左下角到右上角对角线值
		也就是说不要 横坐标等于n-1的那一排和纵坐标等于n-1的那一纵以及 
		以上面那个矩阵的和就是5 
	*/
	
	int i,j,n,sum;
	int a[6][6];
	
	printf("Inputn:");
	
	scanf("%d",&n);
	
	printf("Inputarray:\n ");
	
	//输入矩阵 
 	for(i=0;i<n;i++){
	 	  for(j=0;j<n;j++){
		  	scanf("%d",&a[i][j]);
		  }
	 }

	 
	sum=0;
	for(i=0;i<n;i++){
		for(j=0;j<n;j++) { 
			//不要最后一行和最后一列及左下角到右上角对角线值 
			if(i!=n-1&&j!=n-1&&i+j!=n-1){
				sum+=a[i][j];
			}
		}
	} 
	
	//打印元素和 
	printf("sum=%d\n",sum);
		  		  
	return 0;
	
}

运行测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值