C++ 矩阵加法

问题描述
  给定两个 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

问题分析
  1. 需要懂得基本矩阵加法。
  行和列相同矩阵才可以相加,对应位置的元素相加。
  2. 需要懂得基本循环和多维数组;
  例如:A [2][3],和数学上矩阵类似。

参考代码
C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
using namespace std;

int main()
{
//定义多维数组;

int n,m;
cin>>n>>m;
int A[n][m];
int B[n][m];

//输入数据
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
cin>>A[i][j];
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
cin>>B[i][j];
//对应位置相加并且存在B数组里
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
B[i][j]=A[i][j]+B[i][j];
//输出数组
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
{
cout<<B[i][j];
if(j<m-1)
cout<<" "; //某行某列最后一个元素后不加空格
if(j==m-1)
cout<<endl; //某行某列最后一个数后换行
}
}