【发布时间】:2017-10-28 19:37:55
【问题描述】:
当我输入两个矩阵时,结果矩阵没有显示正确的答案,是我的算法错误还是我不应该以这种方式使用指针? 请帮忙!
main() {
int a[3][3],b[3][3],c[3][3],*p[3],*q[3],*r[3],j1=0;
// 1st Matrix
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
// 2nd matrix
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&b[i][j]);
}
}
// Assigning pointers
for(int i=0;i<3;i++) p[i]=&a[i][0];
for(int i=0;i<3;i++) q[i]=&b[i][0];
for(int i=0;i<3;i++) r[i]=&c[i][0];
// Resultant Matrix
for(int i=0;i<3;i++){
*(*(r+i)+j1) = 0;
for(j1=0;j1<3;j1++){
printf("%d\t",*(*(r+i)+j1));
*(*(r+i)+j1) += *(*(p+i)+j1) * *(*(q+j1)+i);
}
j1 = 0;
}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf("%d\t",c[i][j]);
}
printf("\n");
}
}
【问题讨论】:
-
"我的算法错了吗?" ¯_(ツ)_/¯
-
如果变量有有用的名字,代码会更容易理解...
-
计算结果矩阵的方程错了吗?
-
请查看stackoverflow.com/help/mcve 并更新编辑您的问题以包含您输入的数据和预期结果。
标签: c pointers matrix memory-address