ersanliqiao 2013-10-22 11:40 采纳率: 0%
浏览 1092

动态数组赋值,实现矩阵m,n的乘积,为什么p矩阵的输出总是0元素呢

#include"stdio.h"
#include"stdlib.h" //动态分配的函数需要包含该头文件
//void Matrix(double ,double **,double **,int ,int ,int );
int main()
{
int i,j,k,mWidth,mHeight,nWidth,nHeight;
double **m,
n,**p; //定义指向指针的指针,即表示二维数组名,只定义了分配相关变量,其他变量自己定义
printf("Please input width and height of matrix m\n");
scanf("%d%d",&mWidth,&mHeight);
printf("Please input width and height of matrix n\n");
scanf("%d%d",&nWidth,&nHeight);
m=(double**)calloc(mWidth,sizeof(double*));
n=(double**)calloc(nWidth,sizeof(double*));
p=(double**)calloc(mWidth,sizeof(double*)); //分配w个指针型的空间,即第一维
if(mHeight==nWidth)
{
for(i=0;i<mWidth;i++)
{
m[i]=(double*)calloc(mHeight,sizeof(double));
p[i]=(double*)calloc(nHeight,sizeof(double));//分配h个int型的空间,即第二维
}

for(i=0;i<nWidth;i++)
n[i]=(double*)calloc(nHeight,sizeof(double));
printf("输入m的矩阵\n");
for(i=0;i<mWidth;i++)
{
for(j=0;j<mHeight;j++)
scanf("%ld",&m[i][j]);
}
printf("%f%f",m[0][0],m[0][1]);
printf("输入n的矩阵\n");
for(i=0;i<nWidth;i++)
for(j=0;j<nHeight;j++)
scanf("%ld",&n[i][j]);
}
for(i=0;i<mWidth;i++)
for(j=0;j<nHeight;j++)
{
double sum=0;
for(k=0;k<mHeight;k++)
{ double a=m[i][k];//*(p[i]+j)
double b=n[k][j];
sum+=a*b;
printf("%f\n",sum);
}
p[i][j]=sum;
printf("%f\n",sum);
}
for(i=0;i<mWidth;i++)
for(j=0;j<nHeight;j++)
printf("%f\n",&p[i][j]);
for(i=0;i<mWidth;i++)
{
free(m[i]);//释放第一维指针
free(p[i]);
}
for(i=0;i<nWidth;i++)
{
free(n[i]);
}
free(m);//释放第二维指针
free(n);
free(p);
return 0;
}
//矩阵相乘函数
/*void Matrix(double **M,double **N,double **P,int mwidth,int mheight,int nheight)
{ int i;
int j;
int k;
for(i=0;i<mwidth;i++)
for(j=0;j<nheight;j++)
{
double sum=0;
for(k=0;k<mheight;k++)
{ double a=M[i][k];//*(p[i]+j)
double b=N[k][j];
sum+=a*b;
}
P[i][j]=sum;
}
}*/

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?