C语言中求解方阵乘法运算

【问题描述】
    从键盘输入一个正整数n(n∈[1,10]),表示进行乘法运算的两个整形方阵的阶。然后分别输入两个整形方阵A和B,计算A×B后将结果输出到屏幕。
【输入形式】
    从键盘输入一个正整数,然后再输入两个整形方阵。
【输出形式】
    在屏幕上输出两个整形方阵的乘积。
【输入样例】
3
1 1 1
3 3 3
6 6 6
9 9 9
6 6 6
5 5 5
【输出样例】
########20########20########20
########60########60########60
#######120#######120#######120
【样例说明】
首先输入正整数3,说明接下来要输入的方阵是3×3的。因为
1 1 1         9 9 9          20  20  20
3 3 3  ×   6 6 6    =    60  60  60
6 6 6        5 5 5          120 120 120
所以在屏幕上打印:
########20########20########20
########60########60########60
#######120#######120#######120
注:"#"代表空格,每个输出的整数占10位,不足10位在整数的左边用空格补足。

#include
 int main()
{   int a[3][3], b[3][3], c[3][3];
    int i, j, k, sum;
    printf("输入一个3*3的矩阵:\n");
    for(i=0;i<3;i++)                    //处理矩阵a中的一行中各元素
     for(j=0;j<3;j++)               //处理矩阵a中某一列中各元素
   scanf("%d",&a[i][j]);   //输入数据
 printf("输入一个3*3的矩阵;\n");
 for(i=0;i<3;i++)                   //处理矩阵b中的一行中各元素
  for(j=0;j<3;j++)               //处理矩阵b中某一列中各元素
   scanf("%d",&b[i][j]);    //输入数据
 for(i=0;i<3;i++)                 //对矩阵c进行处理
 { for(j=0;j<3;j++)
  { sum=0;
   for(k=0;k<4;k++)   //矩阵c中每一个元素的循环计算
   {
     sum+=a[i][k]*b[k][j]; //对矩阵c中的某一元素进行计算
   }
   c[i][j]=sum;           //给矩阵c中的某一元素进行赋值
  }
 }
 printf("得到一个3×3的矩阵:\n");
 for(i=0;i<3;i++)            //输出矩阵c
 {
  for(j=0;j<3;j++)
    printf("%5d",c[i][j]);
   printf("\n");
   }
   return 0;
}

我的运算结果是错的,然后输出也不对,不知道怎么去修改。


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
  int a[10][10], b[10][10], c[10][10];
  int n;
  printf("方阵阶数: ");
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      scanf("%d", &a[i][j]);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      scanf("%d", &b[i][j]);
  for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < n; j++)
    {
      c[i][j] = 0;
      for (int k = 0; k < n; k++)
        c[i][j] += a[i][k] * b[k][j];
      printf("%10d", c[i][j]);
    }
    printf("\n");
  }
  return 0;
}