s1e25动动手第0题,输出不正确,求助
通过中间加入检查,过程都正确,只是最后输出时,参照第一个矩阵敲入的后面两个,结果第一个不能正确输出了。求助第一个为什么不能正确输出结果。#include<stdio.h>
int main()
{
int m,n,p,q;
int i,j,k,x,row;
printf("请输入第一个矩阵的尺寸(M*P);");
scanf("%d",&m);
getchar();
scanf("%d",&p);
printf("请输入第二个矩阵的尺寸(P*N);");
scanf("%d",&q);
getchar();
scanf("%d",&n);
if(p!=q)printf("矩阵尺寸不能计算");
int array1;
printf("请输入第一个矩阵的值:\n");
for(i=0;i<m;i++)
{
for(j=0;j<p;j++)
{
scanf("%d",&array1);
}
getchar();
}
//临时检查用输出
//输出第一个矩阵值
//printf("第一个矩阵值\n");
//for(i=0;i<m;i++)
//{
// for(j=0;j<p;j++)
// {
// printf("%d ", array1);
// }
// printf("\n");
//}
printf("请输入第二个矩阵的值:\n");
int array2;
for(i=0;i<p;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&array2);
}
getchar();
}
//临时检查输入用,输出第二个矩阵值
//printf("第二个矩阵值\n");
//for(i=0;i<p;i++)
//{
// for(j=0;j<n;j++)
// {
// printf("%d ",array2);
// }
// printf("\n");
//}
//计算矩阵值
int array3;
for(i=0;i<m;i++) //矩阵赋初值为0
{
for(j=0;j<n;j++)
{
array3=0;
}
}
for(i=0;i<m;i++)//矩阵相乘计算
{
for(j=0;j<n;j++)
{
for(k=0;k<p;k++)
{
array3+=array1*array2;
}
}
}
//临时检查,输出运算结果矩阵值
//printf("第三个矩阵计算结果\n");
//for(i=0;i<m;i++)
//{
// for(j=0;j<n;j++)
// {
// printf("%d ",array3);
// }
// printf("\n");
//}
//输出
row=m>p?m:p;
for(i=0;i<row;i++)
{
//打印第一个矩阵行
printf("| ");
for(j=0;k<p;j++)
{
if(i<m)
{
printf("\b%d ",array1);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
//打印*号
if(i==row/2)
{
printf(" * ");
}
else
{
printf(" " );
}
//打印第二个矩阵行
printf("| ");
for(j=0;j<n;j++)
{
if(i<p)
{
printf("\b%d ",array2);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
//打印=号
if(i==row/2)
{
printf(" = ");
}
else
{
printf(" ");
}
//打印第三个矩阵行
printf("| ");
for(j=0;j<n;j++)
{
if(i<m)
{
printf("\b%d ",array3);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
printf("\n");
}
return 0;
}
for(j=0;k<p;j++)
第104行改成 j<p 两手空空儿 发表于 2022-9-26 11:42
第104行改成 j
谢谢,检查了几遍,居然没有看到这么脑残的错误。
页:
[1]