A24159. 新矩阵
填空题
中等
知识点
题目描述
新矩阵
题目描述
已知一个n×n(2≤n≤20)的矩阵(方阵),把矩阵二条对角线上的元素值加上10,然后输出这个新矩阵。
输入
第一行为 n ; 下面为一个n×n,矩阵中各正整数小于100。
输出
输出新的矩阵。共n行,每行n数,各数之间用一个空格隔开。
输入样例
5
13 66 53 89 55
11 72 61 62 46
90 10 38 10 55
95 20 43 27 19
60 12 66 16 96输出样例
23 66 53 89 65
11 82 61 72 46
90 10 48 10 55
95 30 43 37 19
70 12 66 16 106参考答案
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, a[30][30];
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)
{//左上右下对角线:横纵坐标相同 右上左下对角线:横纵坐标相加和为n+1
if(i == j || i+j == n+1)
a[i][j] += 10; //对角线数字加10
}
for(int i = 1; i <= n; ++i)//输出矩阵
{
for(int j = 1; j <= n; ++j)
cout << a[i][j] << ' ';
cout << endl;
}
return 0;
}答案解析
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t, n, a[30][30] = {}, i, j;
cin >> n;
for(i = j = 1; i <= n && j <= n; i++, j++)//左上右下对角线
a[i][j] += 10;
for(i = 1, j = n; i <= n && j >= 1; i++, j--)//右上左下对角线
{
if(a[i][j] == 0)//防止重复赋值
a[i][j] += 10;
}
for(int i = 1; i <= n; ++i)//输入矩阵
for(int j = 1; j <= n; ++j)
{
cin >> t;
a[i][j] += t;
}
for(int i = 1; i <= n; ++i)//输出矩阵
{
for(int j = 1; j <= n; ++j)
cout << a[i][j] << ' ';
cout << endl;
}
return 0;
}
上一题
下一题