m0_64881388 2022-01-07 21:02 采纳率: 88.9%
浏览 33
已结题

8)编写函数实现两个矩阵的加和乘运算以及矩阵的转置运算。

#include<stdio.h>
void add(inta[3][4],intb[3][4],intc[3][4]);
void translate(inta[3][4],intd[4][3]);
void product(inta[3][4],intd[4][3],inte[3][3]);
int main()
{inta[3][4],b[3][4],i,j,c[3][4],d[4][3],e[3][3];
for(i=0;i<3;i++)for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);add(a,b,c);
translate(a,d);
product(a,d,e);
for(i=0;i<3;i++)for(j=0;j<4;j++)
printf("%3d",c[i][j]);
printf("\n");
for(i=0;i<4;i++)
for(j=0;j<3;j++)
printf("%3d",d[i][j]);
printf("\n");
for(i=0;i<3;i++)for(j=0;j<3;j++)
printf("%8d",e[i][j]);
printf("\n");
return0;}
void add(inta[3][4],intb[3][4],intc[3][4])
{inti,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];}
void translate(inta[3][4],intd[4][3])
{inti,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
d[i][j]=a[j][i];}
void product(inta[3][4],intd[4][3],inte[3][3])
{inti,j,k=0;
for(i=0;i<3;i++)
for(k=0;k<3;k++)
for(j=0;j<4;j++)
e[i][k]+=a[i][j]*d[j][k];}

  • 写回答

1条回答 默认 最新

  • 南七灵 2022-01-07 21:15
    关注
    
    #include <stdio.h>
    void add(int a[3][4], int b[3][4], int c[3][4]);
    void translate(int a[3][4], int d[4][3]);
    void product(int a[3][4], int d[4][3], int e[3][3]);
    int main()
    {
        int a[3][4], b[3][4], i, j, c[3][4], d[4][3], e[3][3];
        for (i = 0; i < 3; i++)
            for (j = 0; j < 4; j++)
                scanf("%d", &a[i][j]);
        for (i = 0; i < 3; i++)
            for (j = 0; j < 4; j++)
                scanf("%d", &b[i][j]);
        add(a, b, c);
        translate(a, d);
        product(a, d, e);
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 4; j++)
                printf("%3d", c[i][j]);
            printf("\n");
        }
        printf("\n");
        for (i = 0; i < 4; i++)
        {
            for (j = 0; j < 3; j++)
                printf("%3d", d[i][j]);
            printf("\n");
        }
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 3; j++)
                printf("%8d", e[i][j]);
            printf("\n");
        }
        return 0;
    }
    void add(int a[3][4], int b[3][4], int c[3][4])
    {
        int i, j;
        for (i = 0; i < 3; i++)
            for (j = 0; j < 4; j++)
                c[i][j] = a[i][j] + b[i][j];
    }
    void translate(int a[3][4], int d[4][3])
    {
        int i, j;
        for (i = 0; i < 3; i++)
            for (j = 0; j < 4; j++)
                d[j][i] = a[i][j];
    }
    void product(int a[3][4], int d[4][3], int e[3][3])
    {
        int i, j, k;
        int temp;
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 3; j++)
            {
                temp = 0;
                for (k = 0; k < 4; k++)
                {
                    temp += a[i][k] * d[k][j];
                }
                e[i][j] = temp;
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效