Ginere 2022-11-20 09:50 采纳率: 33.3%
浏览 295
已结题

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<stdio.h>
 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;
}

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

  • 写回答

1条回答 默认 最新

  • 地球屋里老师 2022-11-20 11:38
    关注
    
    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月20日

悬赏问题

  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题