输入m×n阶矩阵A和B,用函数编程计算并输出A与B之和。
输入格式要求:"%d,%d" 提示信息:"Input m, n:" "Input %d%d matrix a:\n" "Input %d%d matrix b:\n"
*输出格式要求:"Results:\n" "%6d"
程序运行示例如下:
Input m, n:2,3↙
Input 23 matrix a:↙
1 2 3 ↙
4 5 6 ↙
Input 2*3 matrix b:↙
11 12 13 ↙
14 15 16↙
Results:↙
12 14 16↙
18 20 22↙
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int m, n, *a, *b, i, j;
printf("Input m, n:");
scanf("%d,%d", &m, &n);
a = (int *)malloc(m * n * sizeof(int));
b = (int *)malloc(m * n * sizeof(int));
printf("Input %d*%d matrix a:",m,n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &a[i*m+j]);
printf("Input %d*%d matrix b:",m,n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++){
scanf("%d", &b[i*m+j]);
a[i*m+j] += b[i*m+j];
}
for (i = 0; i < m; i++){
for (j = 0; j < n; j++){
printf("%6d", a[i*m+j]);
}
printf("\n");
}
free(a);
free(b);
}
scanf("%d", &a[i*m+j]);
这里应该是i*n+j
所有im+j的地方都要改成in+j
所有的i * m + j都改为 i * n + j
n才是列数量
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int m, n, *a, *b, i, j;
printf("Input m, n:");
scanf("%d,%d", &m, &n);
a = (int *)malloc(m * n * sizeof(int));
b = (int *)malloc(m * n * sizeof(int));
printf("Input %d*%d matrix a:",m,n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &a[i*n+j]);
printf("Input %d*%d matrix b:",m,n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++){
scanf("%d", &b[i*n+j]);
a[i*n+j] += b[i*n+j];
}
for (i = 0; i < m; i++){
for (j = 0; j < n; j++){
printf("%6d", a[i*n+j]);
}
printf("\n");
}
free(a);
free(b);
}