蓝桥杯 ALGO-55算法训练 矩阵加法

时间:2022-12-02 17:00:42

时间限制:1.0s 内存限制:512.0MB
问题描述
  给定两个N×M的矩阵,计算其和。其中:
  N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000。
输入格式
  输入数据的第一行包含两个整数N、M,表示需要相加的两个矩阵的行数和列数。接下来2*N行每行包含M个数,其中前N行表示第一个矩阵,后N行表示第二个矩阵。
输出格式
  你的程序需要输出一个N*M的矩阵,表示两个矩阵相加的结果。注意,输出中每行的最后不应有多余的空格,否则你的程序有可能被系统认为是Presentation  Error
样例输入
2 2
1 2
3 4
5 6
7 8
样例输出
6 8
10 12
【分析】利用两个数组存贮输入的数据,然后两数组元素对应相加即可,题目要求每行的最后一个元素之后不能包含空格,可以加一条判断语句,是否是每行的最后一个元素,即下标是否是m-1,如果不是,输出元素用print后面要加上空格,如果是则直接输出,每输出一行数据要输出一个换行,可直接在最后一个元素输出时用println。
【参考答案】
C++

#include <stdio.h>
main()
{
    int n,m;
    int i,j;
    int a[100][100];
    int b[100][100];
    int c[100][100];
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&b[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            c[i][j]=a[i][j]+b[i][j];
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d\t",c[i][j]);
        }
        printf("\n");
    }
    return 0;
}

C:

#include<stdio.h>

int main(void)
{
    static int a[100][100],b[100][100]; 
    int n,m;
    int i,j;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%d",&a[i][j]);

    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%d",&b[i][j]);

    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            a[i][j]+=b[i][j];
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

Java:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[][] a = new int[n][m];
        int i, j;
        for (i = 0; i < n; i++)
            for (j = 0; j < m; j++)
                a[i][j] = sc.nextInt();
        for (i = 0; i < n; i++)
            for (j = 0; j < m; j++)
                a[i][j] += sc.nextInt();
        for (i = 0; i < n; i++) {
            for (j = 0; j < m - 1; j++)
                System.out.print(a[i][j] + " ");
            System.out.println(a[i][j]);
        }
    }
}