2301_79920703 2023-12-22 23:18 采纳率: 92.6%
浏览 8
已结题

c语言矩阵相乘,用行指针


//矩阵相乘
#include<stdio.h>
#include<time.h>
#define n 10

void xiangcheng(int (*pa)[],int (*pb)[],int (*pc)[],int row1,int col1,int col2)
{
    for(int i=0;i<row1;i++)//相乘
    {
        for(int j=0;j<col2;j++)
        {
            int sum=0;
            for(int k=0;k<col1;k++)
            {
                sum+=(*(pa[i]+k))*(*(pb[k]+j));
            }
            *(pc[i]+j)=sum;
        }
    }
}

int main()
{
    srand(time(0));
    int row1,col1;
    int row2,col2;
    
    printf("请输入第一个矩阵的行数、列数:");
    scanf("%d%d",&row1,&col1);
    row2=col1;
    printf("第二个矩阵行数为%d,请输入第二个矩阵列数:",col1);
    scanf("%d",&col2);

    int a[n][n]={0};
    int b[n][n]={0};
    int c[n][n]={0};

    for(int i=0;i<row1;i++)//赋值a
    {
        for(int j=0;j<col1;j++)
        {
            a[i][j]=rand()%20;
        }
    }
    for(int i=0;i<row2;i++)//赋值b
    {
        for(int j=0;j<col2;j++)
        {
            b[i][j]=rand()%20;
        }
    }

    int (*pa)[n]=a;
    int (*pb)[n]=b;
    int (*pc)[n]=c;
    xiangcheng(pa,pb,pc,row1,col1,col2);
/*
    for(int i=0;i<row1;i++)//相乘
    {
        for(int j=0;j<col2;j++)
        {
            int sum=0;
            for(int k=0;k<col1;k++)
            {
                sum+=a[i][k]*b[k][j];
            }
            c[i][j]=sum;
        }
    }
*/
    printf("\n数组a为:\n");
    for(int i=0;i<row1;i++)//打印a
    {
        for(int j=0;j<col1;j++)
        {
            printf("%5d",a[i][j]);
        }
        printf("\n");
    }
    printf("\n数组b为:\n");
    for(int i=0;i<row2;i++)//打印b
    {
        for(int j=0;j<col2;j++)
        {
            printf("%5d",b[i][j]);
        }
        printf("\n");
    }
    printf("\n数组c为:\n");
    for(int i=0;i<row1;i++)//打印c
    {
        for(int j=0;j<col2;j++)
        {
            printf("%5d",c[i][j]);
        }
        printf("\n");
    }
    



    return 0;
}

img

img

1.矩阵相乘为什么会报错啊,他的错误提示是什么意思啊?

img


2.还有用srand和rand随机赋值时会有警告,可以执行,但明明应该是对的吧,他的警告是什么意思啊

  • 写回答

2条回答 默认 最新

  • 2301_79920703 2023-12-23 18:47
    关注

    第一个问题解决了,在参数哪里我少了n

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit