矩阵相加
试题 算法训练 矩阵加法
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述:
给定两个N×M的矩阵,计算其和。其中:
N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000。
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.用一个新的数组接收相加后的数据,
3.输出数据的时候应该注意要求,是不能有多余的空格,
代码实现:
#include<iostream>
using namespace std;
void print(int a[][100], int n, int m) { //输出数组
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < m-1; j++) { //每行的元素的最后一个先不输出,因为这样输出会有空格,所以单独处理
cout << a[i][j] << " ";
}
cout << a[i][j] << "\n";
}
}
int main() {
int a[100][100] = { 0 }, b[100][100] = { 0 }, c[100][100] = { 0 };//分别存储,第一个矩阵,第二个矩阵,两矩阵相加后的矩阵
int n, m;//分别表示矩阵的行数和列数
cin >> n >> m;
for (int i = 0; i < n; i++) { //将第一个矩阵的数据存入到数组a中,
for (int j = 0; j < m; j++) {
cin >> a[i][j];
}
}
for (int i = 0; i < n; i++) { //将第二个矩阵的数据存入到数组a中,
for (int j = 0; j < m; j++) {
cin >> b[i][j];
}
}
for (int i = 0; i < n; i++) { //进行矩阵加法操作,
for (int j = 0; j < m; j++) {
c[i][j] = a[i][j] + b[i][j];
}
}
print(c, n, m);
return 0;
}

浙公网安备 33010602011771号