测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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;
}


上一题 下一题