2301_79920703 2023-12-09 21:43 采纳率: 92.6%
浏览 4
已结题

c语言指针求矩阵乘积


//矩阵乘法,用列指针
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
int main()
{
    int n;
    printf("input a number:");//输入阶数
    scanf("%d",&n);

    int a[N][N]={0};
    int b[N][N]={0};
    srand(time(0));//随机赋值
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            a[i][j]=rand()%20;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            b[i][j]=rand()%20;
        }
    }

    int *pa=&a[0][0];
    int *pb=&b[0][0];

    int c[N][N]={0};
    int *pc=&c[0][0];

    for(int i=0;i<n;i++)//相乘
    {
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<n;k++)
            {
                //(*(pc[i]+j))+=(*((pa+i)[k]))*(pb[k][j]);
                pc[i*n+j]+=pa[i*n+k]*pb[k*n+j];
            }
        }
    }

    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    printf("----\n");
    printf("pa[1*n+0]=%d\n",pa[1*n+0]);

    for(int i=0;i<n;i++)//打印数组a
    {
        for(int j=0;j<n;j++)
        {
            printf("%4d",pa[i*n+j]);
        }
        printf("\n");
    }
    printf("\n");

    for(int i=0;i<n;i++)//打印数组b
    {
        for(int j=0;j<n;j++)
        {
            printf("%4d",pb[i*n+j]);
        }
        printf("\n");
    }
    printf("\n");

    for(int i=0;i<n;i++)//打印数组c
    {
        for(int j=0;j<n;j++)
        {
            printf("%4d",pc[i*n+j]);
        }
        printf("\n");
    }
    printf("\n");

    return 0;
}

哪里出错了呀
结果是这样的

img


指针用的不对吗?

  • 写回答

2条回答 默认 最新

  • micthis 2023-12-09 21:59
    关注

    都应该乘以N,比如i*N+j

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

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月9日

悬赏问题

  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式