孤世星辰 发表于 2020-4-16 20:16:02

这是二维数组怎么跳不出来了??

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

int main()
{
        int M,P,N;

      printf("请输入第一个矩阵的尺寸(M*P):");
        scanf("%d * %d",&M,&P);
      printf("请输入第二个矩阵的尺寸(M*P):");
        scanf("%d * %d",&P,&N);
       
        int a;
        int b;

      int c;

      int i, j, k, row;

        for(i=0;i<M;i++)
        {
                for(j=0;j<N;j++)
                {
                        c=0;
                }
        }
       
        printf("请输入第一个矩阵的值:\n");

        for(i=0;i<M;i++)
        {
                for(j=0;j<N;j++)
                {
                        scanf("%d",&a);
                }
        }

        printf("请输入第二个矩阵的值:\n");

        for(i=0;i<M;i++)
        {
                for(j=0;j<N;j++)
                {
                        scanf("%d",&b);
                }
        }

      for (i = 0; i < M; i++)
      {
                for (j = 0; j < N; j++)
                {
                        for (k = 0; k < P; k++)
                        {
                              c += a * b;
                        }
                }
      }

      // row 取行数最大值
      row = M > P ? M : P;

      for (i = 0; i < row; i++)
      {
                // 打印A
                printf("|");
                for (j = 0; j < P; j++)
                {
                        if (i < M)
                        {
                              printf("\b%d ", a);
                              printf("|");
                        }
                        else
                        {
                              printf("\b\b\b   ");
                        }
                }
                // 打印 * 号
                if (i == row / 2)
                {
                        printf(" * ");
                }
                else
                {
                        printf("   ");
                }
                printf("|");
                // 打印B
                for (j = 0; j < N; j++)
                {
                        if (i < P)
                        {
                              printf("\b%d ", b);
                              printf("|");
                        }
                        else
                        {
                              printf("\b\b\b   ");
                        }
                }
                // 打印 = 号
                if (i == row / 2)
                {
                        printf(" = ");
                }
                else
                {
                        printf("   ");
                }
                // 打印C
                printf("|");
                for (j = 0; j < N; j++)
                {
                        if (i < M)
                        {
                              printf("\b%d ", c);
                              printf("|");
                        }
                        else
                        {
                              printf("\b\b\b      ");
                        }
                }
                printf("\n");
      }

      return 0;
}


BngThea 发表于 2020-4-16 20:21:17

你定义的a不是MP吗,你循环中写的MN

孤世星辰 发表于 2020-4-16 20:26:19

BngThea 发表于 2020-4-16 20:21
你定义的a不是MP吗,你循环中写的MN

emmmm改的时候漏了谢谢
页: [1]
查看完整版本: 这是二维数组怎么跳不出来了??