gpt4 book ai didi

c - 2x2 矩阵乘法

转载 作者:行者123 更新时间:2023-11-30 18:30:07 26 4
gpt4 key购买 nike

我正在尝试编写一个程序来计算两个矩阵的总和和乘积,但我无法让它的乘积发挥作用。总数还好。我正在使用 Visual Studio。

这是我的程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
float a[2][2], b[2][2], c[2][2], d[2][2], sum;
int i,j,k;

for(i = 0; i < 2; i++) {
for(j = 0; j < 2; j++) {
d[i][j] = 0;
}
}

printf("Enter the elements of 1st matrix\n");
/*
* Reading two dimensional Array with the help of two for loop. If there
* was an array of 'n' dimension, 'n' numbers of loops are needed for
* inserting data to array.
*/
for (i = 0; i < 2; ++i)
for (j = 0; j < 2; ++j) {
printf("Enter a%d%d: ", i + 1, j + 1);
scanf("%f", &a[i][j]);
}

printf("\nEnter the elements of 2nd matrix\n");
for (i = 0; i < 2; ++i)
for (j = 0; j < 2; ++j) {
printf("Enter b%d%d: ", i + 1, j + 1);
scanf("%f", &b[i][j]);
}

printf("\nMatrix 1:\n");
for (i = 0; i < 2; ++i)
for(j = 0; j < 2; ++j) {
printf("%.1f\t", a[i][j]);
if (j == 1) /* To display matrix sum in order. */
printf("\n");
}
printf("\nMatrix 2:\n");

for(i = 0; i < 2; ++i)
for(j = 0; j < 2; ++j) {
printf("%.1f\t", b[i][j]);
if (j == 1) /* To display matrix sum in order. */
printf("\n");
}

for (i = 0; i < 2; ++i)
for(j = 0; j < 2; ++j) {
/* Writing the elements of multidimensional array using loop. */
c[i][j]=a[i][j]+b[i][j]; /* Sum of corresponding elements of two arrays. */
}
printf("\nSum Of Matrix:\n");
for (i = 0; i < 2; ++i)
for(j = 0; j < 2; ++j) {
printf("%.1f\t",c[i][j]);
if (j == 1) /* To display matrix sum in order. */
printf("\n");
}

for(i = 0 ; i < 2 ; i++) {
for(j = 0 ; j < 2 ; j++) {
sum = 0 ;
for(k = 0 ; k < 2 ; k++) {
sum = sum + a[i][k] * b[k][j];
printf("a: %d; b: %d\n", a[i][k], b[k][j]);
printf("%d", sum);
}
d[i][j]=sum;
}
}
printf("\nThe multiplication matrix is : \n\n") ;
for(i = 0; i < 2; i++) {
for(j = 0; j < 2; j++) {
printf("%d \t", d[i][j]) ;
}
printf("\n") ;
}

system("PAUSE");
return 0;
}

这是输出:

Matrix 1:
1.0 2.0
3.0 4.0

Matrix 2:
5.0 6.0
7.0 8.0

Sum Of Matrix:
6.0 8.0
10.0 12.0
a: 0; b: 1072693248
0a: 0; b: 1073741824
0a: 0; b: 1072693248
0a: 0; b: 1073741824
0a: 0; b: 1074266112
0a: 0; b: 1074790400
0a: 0; b: 1074266112
0a: 0; b: 1074790400
0
The multiplication matrix is :

0 0
0 0

我看不出矩阵 A 和 B 的问题出在哪里。

最佳答案

首先,我不会将 for 循环的终止硬编码为常量,而是硬编码为 sizeof(a)/sizeof(a[0]) 等。其次,问题是您试图将 float 打印为整数 - 第 68 行读取:

printf("a: %d; b: %d\n",a[i][k],b[k][j]);

但应该是

printf("a: %.1f; b: %.1f\n",a[i][k],b[k][j]);

这些问题存在于第 68、69 和 79 行。如果将 %d 更改为 %f 应该没问题。

关于c - 2x2 矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com