#include <stdio.h>
int main()
{
int r1, r2, c1, c2;
printf("Enter number of rows and colums for mat1-"); //matrix1//
scanf("%d %d", &r1, &c1);
int m1[r1][c1];
for (int i = 0; i < r1; i++)
{
for (int j = 0; j < c1; j++)
{
printf("Enter mat1[%d][%d]-", i + 1, j + 1);
scanf("%d", &m1[i][j]);
}
}
printf("Enter no of rows columns for mat2-"); //matrix2//
scanf("%d %d", &r2, &c2);
int m2[r2][c2];
for (int i = 0; i < r2; i++)
{
for (int j = 0; j < c2; j++)
{
printf("Enter mat2[%d][%d]-", i + 1, j + 1);
scanf("%d", &m2[i][j]);
}
}
int m3[r1][c2];
for (int i = 0; i < r1; i++) //matrix multiplication//
{
for (int j = 0; i < c2; j++)
{
int sum = 0;
for (int k = 0; k < r1; k++)
{
sum += (m1[i][k] * m2[k][j]);
}
m3[i][j] = sum;
}
FILE *outputFile = fopen("output.txt", 'w');
if (outputFile == NULL)
{
printf("Error");
return 1;
}
for (int i = 0; i < r1; i++) /*this part is not working*/
{
for (int j = 0; j < c2; j++)
{
fprintf(outputFile, "%d", m3[i][j]);
}
fprintf(outputFile, "\n");
}
fclose(outputFile);
return 0;
}
}
抱歉给您带来不便,这是我第一次在 stackoverflow 上提问。 最初的问题是 - 编写一个程序来执行矩阵乘法。矩阵的大小和矩阵的元素是由用户通过控制台输入获得的。将结果矩阵写入文件“output.txt”。
您的代码的问题是您在矩阵乘法的第二个 for 循环中存在拼写错误。你写的是 (int j = 0; i < c2; j++) instead of for (int j = 0; j < c2; j++). This causes an infinite loop and prevents the program from writing the result to the file. To fix this, you need to change i to j in the loop condition.
这是更正后的代码:
#include <stdio.h>
int main () {
int r1, r2, c1, c2;
printf ("Enter number of rows and colums for mat1-"); //matrix1//[^2^][2]
scanf ("%d %d", &r1, &c1);
int m1 [r1] [c1];
for (int i = 0; i < r1; i++) {
for (int j = 0; j < c1; j++) {
printf ("Enter mat1 [%d] [%d]-", i + 1, j + 1);
scanf ("%d", &m1 [i] [j]);
}
}
printf ("Enter no of rows columns for mat2-"); //matrix2//
scanf ("%d %d", &r2, &c2);
int m2 [r2] [c2];
for (int i = 0; i < r2; i++) {
for (int j = 0; j < c2; j++) {
printf ("Enter mat2 [%d] [%d]-", i + 1, j + 1);
scanf ("%d", &m2 [i] [j]);
}
}
int m3 [r1] [c2];
for (int i = 0; i < r1; i++) //matrix multiplication//
{
for (int j = 0; j < c2; j++) //changed i to j here//
{
int sum = 0;
for (int k = 0; k < r1; k++) {
sum += (m1 [i] [k] * m2 [k] [j]);
}
m3 [i] [j] = sum;
}
}
FILE *outputFile = fopen ("output.txt", "w");
if (outputFile == NULL) {
printf ("Error");
return 1;
}
for (int i = 0; i < r1; i++) /*this part is now working*/
{
for (int j = 0; j < c2; j++) {
fprintf (outputFile, "%d", m3 [i] [j]);
}
fprintf (outputFile, "\n");
}
fclose (outputFile);
return 0;
}
我希望这有帮助。