时间限制: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]);
}
}
}