本帖最后由 烂泥化刚 于 2021-1-19 11:45 编辑
这样
我使用的是dev
有问题的代码在《进行矩阵运算(第36行)那一块
这个本可以忽略的问题让我的代码在能运行的基础下一直出错#include <stdio.h>
int main()
{
int m, n, p;
printf("请输入第一个矩阵的尺寸:(M * P)\n");
scanf("%d * %d", &m, &p);
printf("请输入第二个矩阵的尺寸:(P * N)\n");
scanf("%d * %d", &p, &n);
int array[m][p], array2[p][n];
int result[m][n];
for(int i = 0; i < m*n; i++)
{
*(*result + i) = 0;
}
printf("请输入第一个矩阵的值:\n");
for(int i = 0; i < m; i++)//存入第一个矩阵
{
for(int j = 0; j < p; j++)
{
scanf("%d", &array[i][j]);
}
}
printf("请输入第二个矩阵的值:\n");
for(int i = 0; i < p; i++)//存入第二个矩阵
{
for(int j = 0; j < n; j++)
{
scanf("%d", &array2[i][j]);
}
}
//进行矩阵的运算
for(int j = 0; j < m; j++)
{
for(int i = 0; i < n; i++)
{
for(int a = 0; a < p; a++)
{
result[j][i] += array[j][a] * array2[a][i];
}
}
}
printf("计算结果如下:\n") ;
for(int a = 0, b, i; a < m|| a < p;a++)//开始打印结果
{
for(i = 0; i < 3; i++)
{
if(a < m&& i == 0)
{
putchar('|');
for(b = 0; b < p; b++)
{
printf(" %d", array[a][b]);
}
}
else if(i == 0)
{
putchar(' ');
for(b = 0; b < p; b++)
{
printf(" ");
}
}
else if(a < p&& i ==1)
{
putchar('|');
for(b = 0; b < n; b++)
{
printf(" %d", array2[a][b]);
}
}
else if(i == 1)
{
putchar(' ');
for(b = 0; b < n; b++)
{
printf(" ");
}
}
else if(a < m&& i ==2)
{
putchar('|');
for(b = 0; b < n; b++)
{
printf(" %d", result[a][b]);
}
}
else if(i == 2)
{
putchar(' ');
for(b = 0; b < n; b++)
{
printf(" ");
}
}
if(a == 2&& i == 0)
{
printf(" | * ");
}
else if(a == 2&& i == 1)
{
printf(" | = ");
}
else if(i == 2)
{
printf(" | \n");
}
else
{
printf(" | ");
}
}
}
return 1;
}
|