问题遇到的现象和发生背景
开发环境:Visual Studio 2019
问题相关代码,请勿粘贴截图
printf("请输入第一个矩阵的行标和列标(空格分开):");
scanf("%d %d", &a1, &b1);
f = (double**)malloc(sizeof(double*) * a1);
for (m = 0;m < a1;m++)
{
f[m] = (double*)malloc(sizeof(double) * b1);
}
printf("请输入第一个矩阵的值:");
for (m = 0;m < a1;m++)
{
for (n = 0;n < b1;n++)
{
scanf("%lf", &f[m][n]);
}
}
printf("请输入第二个矩阵的行标和列标(空格分开):");
scanf("%d %d", &a2, &b2);
h = (double**)malloc(sizeof(double*) * a2);
for (m = 0;m < a2;m++)
{
h[m] = (double*)malloc(sizeof(double) * b2);
}
printf("请输入第二个矩阵的值:");
for (m = 0;m < a2;m++)
{
for (n = 0;n < b2;n++)
{
scanf("%lf", &h[m][n]);
}
}
l = (double**)malloc(sizeof(double*) * a1);
for (m = 0;m < a1;m++)
{
l[m] = (double*)malloc(sizeof(double) * b1);
}
matrixAddition(f, h, l, a1, a2, b1, b2);
void matrixAddition(double** f, double** h, double** l,int a1, int a2, int b1, int b2)//矩阵加法
{
int i,j;
if ((a1 !=a2) && (b1 != b2))
{
printf("矩阵加法无法运行!\n");
}
else
{
printf("矩阵加法结果为:\n");
for (i = 0;i < a1;i++)
{
for (j = 0;j < b1;j++)
{
l[i][j] = f[i][j] + h[i][j];
printf("%.2lf\t", l[i][j]);
}
printf("\n");
}
}
printf("结束矩阵运算!\n");
}
运行结果及报错内容
1.两个矩阵加法
2.两个矩阵减法
3.两个矩阵乘法
4.矩阵数乘
0.退出矩阵运算
请选择矩阵加/减/乘/数乘运算:1
请输入第一个矩阵的行标和列标(空格分开):2 3
请输入第一个矩阵的值:1 1 1 1 1 1
请输入第二个矩阵的行标和列标(空格分开):2 2
请输入第二个矩阵的值:1 1 1 1
矩阵加法结果为:
2.00 2.00 1.00
2.00 2.00 1.00
结束矩阵运算!
我的解答思路和尝试过的方法
我想要达到的结果
1.为什么两个矩阵行列数不一样却还可以得出结果,应该怎么解决?
2.f = (double**)malloc(sizeof(double*) * a1);这个地方容易出现断点问题,如何避免?