问题描述
给定两个 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; //某行某列最后一个数后换行 } }
|