c - 一般乘法矩阵
问题描述
我写了一个将矩阵相乘的程序。为了测试我输入:
A [1 0, 0 1] and B=[2 2, 2 2]
结果应该是:[2 2, 2 2]
. 然而,我得到了[2122123 2, 2 2]
. 为什么会这样?也许该值是存储中的地址?
#include <stdio.h>
int main(){
int A[10][10], B[10][10], C[10][10];
int n,m,r,s,k,sum,j,i=0;
printf("Enter the number of rows and columns of first matrix\n");
scanf("%d%d", &n,&m);
getchar();
printf("Enter values:\n");
for(i=0; i<n;i++){
for(j=0; j<m; j++){
scanf("%d", &A[i][j]);
getchar();
}
}
printf("Enter the number of rows and columns of second matrix\n");
scanf("%d%d", &r,&s);
getchar();
if ( m != r )
printf("Matrices with entered orders can't be multiplied with each other.\n");
else{
printf("Enter values\n");
for(i=0; i<r;i++){
for(j=0; j<s; j++){
scanf("%d", &B[i][j]);
getchar();
}
}
for(i=0; i<n; i++){
for(j=0; j<s;j++){
for(k=0;k<r; k++){
sum=sum+ A[i][k]*B[k][j];
}
C[i][j]=sum;
sum=0;
}
}
printf("Product of entered matrices:-\n");
for(i=0; i<n;i++){
for(j=0; j<s; j++){
printf("%d\t",C[i][j] );
}
printf("\n");
}
}
return 0;
}
总而言之,我考虑维度为 nxm 和 rxs 的矩阵。
解决方案
该行int n,m,r,s,k,sum,j,i=0;
未初始化sum
为0
。它只设置i
.
在循环结束sum = 0;
之前设置,而不是之后。k
推荐阅读
- c - 为什么我在使用 extern 时可以用错误的签名调用我的函数?
- java - RecyclerView GridLayoutManager:每个项目计数的单独布局
- r - 如何将逆高斯分布拟合到我的数据中,最好使用 fitdist {fitdistrplus}
- vb.net - 使用 vb.net 打印包含图片框、标签和文本框的两个或多个页面的可滚动面板
- ruby-on-rails - 删除 add_column 文件后 Heroku 数据库中缺少列
- javascript - 从格式中提取经纬度 (47.35275, 8.55709)
- node.js - 启用 aws-xray serverless.yml
- python - 需要有关在 for 循环中打印列表的帮助
- ios - 在 StoryBoard 中调整集合视图标题的大小
- python-3.7 - 如何在字符串中间连接变量?