我用c语言写了一段代码,用多维矩阵和循环求矩阵的乘法,但它是打印地址
我用c语言写了一个代码,通过使用多维矩阵和循环来寻找矩阵的乘法,一切都很好,但它是打印地址,我已经尝试了一切,但我无法找出我的错误。Anbody plz帮助我找出问题所在。一个建议将非常有帮助我用c语言写了一段代码,用多维矩阵和循环求矩阵的乘法,但它是打印地址,c,C,我用c语言写了一个代码,通过使用多维矩阵和循环来寻找矩阵的乘法,一切都很好,但它是打印地址,我已经尝试了一切,但我无法找出我的错误。Anbody plz帮助我找出问题所在。一个建议将非常有帮助 #include <stdio.h> int main() { int a[10][10], b[10][10], result[10][10]; int r1, c1, r2, c2, i, j, k, sum = 0; printf("give
#include <stdio.h>
int main() {
int a[10][10], b[10][10], result[10][10];
int r1, c1, r2, c2, i, j, k, sum = 0;
printf("give number of rows and column");
scanf("%d %d", &r1, &c1);
printf("give number of rows and column");
scanf("%d %d", &r2, &c2);
while (c1 != r2) {
printf("invalid matrix");
printf("give number of rows and column");
scanf("%d %d", &r1, &c1);
printf("give number of rows and column");
scanf("%d %d", &r2, &c2);
}
for (i = 1; i <= r1; i++) {
for (j = 1; j <= c2; j++) {
printf("enter the numbers for 1\n");
scanf("%d", &a[i][j]);
}
}
for (i = 1; i <= r1; i++) {
for (j = 1; j <= c2; j++) {
printf("enter the numbers \n");
scanf("%d", &b[i][j]);
}
}
for (i = 0; i < r1; ++i) {
for (j = 0; j < c2; ++j) {
for (k = 0; k < c1; ++k) {
sum += a[i][k] * b[k][j];
}
}
result[i][j] = sum;
sum = 0;
}
for (int i = 1; i <= r1; i++) {
for (int j = 1; j <= c2; j++) {
printf("%d", result[i][j]);
}
printf("\n\n\n");
}
return 0;
}
#包括
int main(){
int a[10][10],b[10][10],result[10][10];;
int r1,c1,r2,c2,i,j,k,和=0;
printf(“给出行数和列数”);
scanf(“%d%d”、&r1和&c1);
printf(“给出行数和列数”);
scanf(“%d%d”、&r2和&c2);
而(c1!=r2){
printf(“无效矩阵”);
printf(“给出行数和列数”);
scanf(“%d%d”、&r1和&c1);
printf(“给出行数和列数”);
scanf(“%d%d”、&r2和&c2);
}
对于(i=1;i我认为,正如人们在评论中指出的,您的代码中存在几个问题:
当以数组作为输入时,您从1..r1
迭代,但数组索引从零开始,因此对于长度为n的数组,您应该从0..n-1
迭代。这意味着r=0,c=0的矩阵索引具有未初始化的垃圾值。您需要修改数组输入循环,如下所示:
(i=0;i{
对于(j=0;j
{
对于(j=0;j for(k=0;kresult[i][j]=sum;
必须在for(k
循环的末尾上移。它现在位于for(j循环的之后,因此j
不再是有效的索引。所有循环都应该将其循环变量初始化为零,而不是1。