顶级太阳 发表于 2022-9-26 08:52:48

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;

}


两手空空儿 发表于 2022-9-26 11:42:14

      for(j=0;k<p;j++)

第104行改成 j<p

顶级太阳 发表于 2022-9-26 11:48:58

两手空空儿 发表于 2022-9-26 11:42
第104行改成 j

谢谢,检查了几遍,居然没有看到这么脑残的错误。
页: [1]
查看完整版本: s1e25动动手第0题,输出不正确,求助