题目描述:
分别求一个n乘n的方针的主对角线元素之和和副对角线的元素之和。比如一个3乘3的方针主对角线和副对角线。
如下图:
输入格式:
第一行输入一个整数 n(1≤n≤100)。接下来n行,每行输入n个整数,每个整数的绝对值小于等于1000。
输出格式:
输出一行两个整数,分别表示主对角线和副对角线的和值,用一个空格隔开。
样例输入:
3
1 2 3
4 5 6
7 8 9
样例输出:
15 15
思路:
1.创建一个二维数组,把数存进去。
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
}
2.去寻找主对角线和副对角线的规律,
可发现规律如下:
主对角线 :都是n的平方。
副对角线:位置和是n+1。
然后把数存进变量里。
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i + j == n + 1) {
sum += a[i][j];
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j) {
sum1 += a[i][j];
}
}
}
3.最后把两条对角线的和输出。
注意:
1.输出时每行末尾的多余空格,不影响答案正确性。
2.输出时要先输出主对角线,在输出副对角线,不能弄反了。
具体代码如下:
点赞加关注在复制哦!
#include <bits/stdc++.h>
using namespace std;
int a[105][105];
int main() {
int n;
int sum = 0;
int sum1 = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i + j == n + 1) {
sum += a[i][j];
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j) {
sum1 += a[i][j];
}
}
}
cout << sum1 << " ";
cout << sum;
return 0;
}