C 关于二维数组
我是C语言的初学者,我是中国人。 我想要这段可以实现矩阵乘法的代码。 为了实现这一点,我使用了二维数组。 但是当我运行代码和输入矩阵时,乘法的结果总是很奇怪。 但是,代码可以输出我输入的矩阵。 所以我认为两个数组的元素相乘会引起麻烦。 多亏了女神,当我尝试输出两个数组元素的乘法时,它真正遇到了相同的问题 根据这一点,我提出了一些问题C 关于二维数组,c,arrays,C,Arrays,我是C语言的初学者,我是中国人。 我想要这段可以实现矩阵乘法的代码。 为了实现这一点,我使用了二维数组。 但是当我运行代码和输入矩阵时,乘法的结果总是很奇怪。 但是,代码可以输出我输入的矩阵。 所以我认为两个数组的元素相乘会引起麻烦。 多亏了女神,当我尝试输出两个数组元素的乘法时,它真正遇到了相同的问题 根据这一点,我提出了一些问题 如何成功实现两个数组元素的乘法 如何更正代码 如果我有一些你无法忍受的习惯,你可以肯定地告诉我 守则: #include <stdio.h> int
#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;
}
#包括
内部主(空){
//在这里插入代码。。。
int i,j,k;
int-tensu1[4][3]、tensu2[3][4]、tensu3[4][4];
/*输入矩阵的元素*/
对于(i=0;i<4;i++){
对于(j=0;j<3;j++){
printf(“请输入第一个矩阵第%D行第%D列的数: ", i+1,j+1);
scanf(“%d”、&tensu1[i][j]);
}
}
对于(i=0;i<3;i++){
对于(j=0;j<4;j++){
printf(“请输入第二个矩阵第%D行第%D列的数: “,i+1,j+1);
scanf(“%d”、&tensu2[i][j]);
}
}
/*计算结果*/
对于(i=0;i<4;i++){
对于(j=0;j<4;j++){
对于(k=0;k<3;k++)
tensu3[i][j]=tensu1[i][k]*tensu2[k][i]+tensu3[i][j];
}
}
/*显示结果*/
printf(“第一个矩阵是:\n”);
对于(i=0;i<4;i++){
putchar(“|”);
对于(j=0;j<3;j++){
printf(“%4d”,tensu1[i][j]);
}
putchar(“|”);
putchar('\n');
}
printf(“第二个矩阵是:\n”);
对于(i=0;i<3;i++){
putchar(“|”);
对于(j=0;j<4;j++){
printf(“%4d”,tensu1[i][j]);
}
putchar(“|”);
putchar('\n');
}
printf(“矩阵的结果是:\n”);
对于(i=0;i<4;i++){
putchar(“|”);
对于(j=0;j<4;j++){
printf(“%4d”,tensu3[i][j]);
}
putchar(“|”);
putchar('\n');
}
返回0;
}
在使用变量的值之前,必须先为变量赋值。在赋值之前,必须先使用tensu3
中的值,这样就可以将这些值添加到它们碰巧拥有的任何垃圾值中。我在代码中编辑了这些值。替换它
/*计算结果*/
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];
}
}
(i=0;i<4;i++)的{
对于(j=0;j<4;j++){
tensu3[i][j]=0;
对于(k=0;k<3;k++)
tensu3[i][j]+=tensu1[i][j]*tensu2[k][j];
}
}
由于您的提及,我发现了问题所在!当我使用代码“tensu3[I][j]=tensu1[I][k]*tensu2[k][I]+tensu3[I][j]”时,我不小心忽略了这一点,我已经使用了该值……感谢您的帮助!