我是C语言的初学者,我是中国人。 我想要这段可用于矩阵乘法的代码。 为此,我使用二维数组。 但是,当我运行代码并输入矩阵时,相乘的结果总是很奇怪。 但是,代码可以设法输出我输入的矩阵。 所以我想两个数组元素的乘法会引起麻烦。 多亏了女神,当我尝试输出两个数组元素的乘法时,确实遇到了相同的问题。
据此,我提出了一些问题。
代码:
#include <stdio.h>
int main(void) {
// insert code here...
int i, j ,k ;
int tensu1[4][3],tensu2[3][4],tensu3[4][4];
/*input the element of the matrix*/
for ( i = 0; i < 4; i++ ) {
for (j = 0; j < 3; j++){
printf("请输入第一个矩阵第%d行第%d列的数: ", i+1 , j+1);
scanf( "%d" , &tensu1[i][j]);
}
}
for ( i = 0; i < 3; i++ ) {
for (j = 0; j < 4; j++){
printf("请输入第二个矩阵第%d行第%d列的数: ", i+1 , j+1);
scanf( "%d" , &tensu2[i][j]);
}
}
/*calculate the result */
for ( i = 0; i < 4 ; i++ ) {
for(j = 0; j < 4 ; j++) {
for(k = 0; k < 3 ;k++)
tensu3[i][j] = tensu1 [i][k] * tensu2 [k][i] + tensu3[i][j];
}
}
/* show result */
printf("The first matrix is:\n");
for ( i = 0 ; i < 4 ; i++ ) {
putchar('|');
for ( j = 0; j < 3; j++ ) {
printf( "%4d" , tensu1[i][j] );
}
putchar('|');
putchar('\n');
}
printf("The second matrix is:\n");
for ( i = 0 ; i < 3 ; i++ ) {
putchar('|');
for ( j = 0; j < 4; j++ ) {
printf( "%4d" , tensu1[i][j] );
}
putchar('|');
putchar('\n');
}
printf("The result of matrix is:\n");
for ( i = 0 ; i < 4 ; i++ ) {
putchar('|');
for ( j = 0; j < 4; j++ ) {
printf( " %4d " , tensu3[i][j] );
}
putchar('|');
putchar('\n');
}
return 0;
}
答案 0 :(得分:2)
我在您的代码中进行了编辑。替换它。
/ *计算结果* /
for ( i = 0; i < 4 ; i++ ) {
for(j = 0; j < 4 ; j++) {
tensu3[i][j] = 0;
for(k = 0; k < 3 ;k++)
tensu3[i][j] += tensu1 [i][j] * tensu2[k][j];
}
}
答案 1 :(得分:0)
在使用变量的值之前,必须为其分配一个值。在分配值之前,您开始使用tensu3
中的值,因此会将它们恰好具有的所有垃圾值添加到其中。