m0_69200298 2022-05-06 22:20 采纳率: 0%
浏览 34

c语言的矩阵2*3和2*2为什么可以相加

问题遇到的现象和发生背景

开发环境: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);这个地方容易出现断点问题,如何避免?

  • 写回答

1条回答 默认 最新

  • A-Chin 2022-05-06 22:31
    关注

    可以的,这时候就看较小矩阵的大小

    两个矩阵行列的交集 所对应的元素 可以相加

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月6日

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧