一、题目-矩阵
求一个3×3矩阵对角线元素之和。
输入格式
矩阵
输出格式
主对角线 副对角线 元素和
样例输入
1 2 3
1 1 1
3 2 1
样例输出
3 7
二、参考的知识
这里给大家送点英语单词,记得学习:
p r i m a r y. adj.主要的;初级的
s e c o n d a r y. adj.次要的;二级的
Diagonal. n/adj. 对角线(的)
”嗨害嗨,我是主对角线“
这个是 副对角线,名叫secondaryDiagonal
三、题解分析
(1)创建矩阵:
这个类似于数组,二维的数组。
int[ ][ ] matrix = new int[ 3 ] [ 3 ]; //题目要求的3*3的矩阵
提问 ! 那么如何像这样,动态创建一维数组呢?
参考答案示例:
// Scanner scan = new Scanner(System.in);
// int n = scan.nextInt( ); //数组长度
int[ ] 数组名 = new int[ n ]; //其中n要提前输入
(2)计算矩阵的副对角线的和:
完形填空 !要遍历(上图)副对角线的值,问号处应该填什么呢?
(其中matrix为创建的3*3的矩阵名称)
for( int i=0 ; i < 3 ; i++){
System.out.print( matrix[ ? ][ ? ]+" ")
}
聪明的你,应该能想出来:
答案是: i 和 2-i
matrix [ i ][( 数组长度-1)-i ];
思考:二维矩阵为7*7的代码的主、副对角线,应该是什么呢?
四、我是代码
参考了chatGpt提供的帮助
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[][] matrix = new int[3][3];
//读取矩阵
for( int i=0; i<3 ; i++) {
for( int j=0 ; j<3 ;j++) {
matrix[i][j] = scan.nextInt();
}
}
//计算主对角线元素之和
int primaryDiagonalSum=0;
for( int i=0; i < 3; i++) {
primaryDiagonalSum += matrix[i][i];
}
//计算副对角线元素之和
int secondaryDiagonalSum = 0;
for( int i=0; i<3 ; i++) {
secondaryDiagonalSum += matrix[i][2-i];
}
//输出结果
System.out.println(primaryDiagonalSum+" "+secondaryDiagonalSum );
}
}