c语言程序设计答案 求两个矩阵的积
答案:1 悬赏:40
解决时间 2021-03-03 08:44
- 提问者网友:枯希心
- 2021-03-02 16:58
c语言程序设计答案 求两个矩阵的积
最佳答案
- 二级知识专家网友:初心未变
- 2021-03-02 17:23
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int m,g,n;
int i,j,k;
printf("请输入第一个矩阵的行数和列数:\n");
scanf("%d%d",&m,&g);
printf("请输入第二个矩阵的列数(该矩阵行数等于第一个矩阵的列数):\n");
scanf("%d",&n);
double **a=NULL;
a=(double**)malloc(m*sizeof(double*));
for(i=0;i<m;i++)
a[i]=(double*)malloc(g*sizeof(double));
printf("请输入第一个矩阵中的元素:\n");
for(i=0;i<m;i++)
for(j=0;j<g;j++)
scanf("%lf",&a[i][j]);
double **b=NULL;
b=(double**)malloc(g*sizeof(double *));
for(i=0;i<g;i++)
b[i]=(double*)malloc(n*sizeof(double));
printf("请输入第二个矩阵中的元素:\n");
for(i=0;i<g;i++)
for(j=0;j<n;j++)
scanf("%lf",&b[i][j]);
double **result=NULL;
result=(double**)malloc(m*sizeof(double*));
for(i=0;i<m;i++)
result[i]=(double*)malloc(n*sizeof(double));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
result[i][j]=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
for(k=0;k<g;k++)
result[i][j]+=a[i][k]*b[k][j];
printf("结果:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%5g",result[i][j]);
printf("\n");
}
for(i=0;i<m;i++)
{
free(a[i]);
a[i]=NULL;
free(result[i]);
result[i]=NULL;
}
free(a);
a=NULL;
free(result);
result=NULL;
for(i=0;i<g;i++)
{free(b[i]);
b[i]=NULL;
}
free(b);
b=NULL;
return 0;
}
#include<stdlib.h>
int main(void)
{
int m,g,n;
int i,j,k;
printf("请输入第一个矩阵的行数和列数:\n");
scanf("%d%d",&m,&g);
printf("请输入第二个矩阵的列数(该矩阵行数等于第一个矩阵的列数):\n");
scanf("%d",&n);
double **a=NULL;
a=(double**)malloc(m*sizeof(double*));
for(i=0;i<m;i++)
a[i]=(double*)malloc(g*sizeof(double));
printf("请输入第一个矩阵中的元素:\n");
for(i=0;i<m;i++)
for(j=0;j<g;j++)
scanf("%lf",&a[i][j]);
double **b=NULL;
b=(double**)malloc(g*sizeof(double *));
for(i=0;i<g;i++)
b[i]=(double*)malloc(n*sizeof(double));
printf("请输入第二个矩阵中的元素:\n");
for(i=0;i<g;i++)
for(j=0;j<n;j++)
scanf("%lf",&b[i][j]);
double **result=NULL;
result=(double**)malloc(m*sizeof(double*));
for(i=0;i<m;i++)
result[i]=(double*)malloc(n*sizeof(double));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
result[i][j]=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
for(k=0;k<g;k++)
result[i][j]+=a[i][k]*b[k][j];
printf("结果:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%5g",result[i][j]);
printf("\n");
}
for(i=0;i<m;i++)
{
free(a[i]);
a[i]=NULL;
free(result[i]);
result[i]=NULL;
}
free(a);
a=NULL;
free(result);
result=NULL;
for(i=0;i<g;i++)
{free(b[i]);
b[i]=NULL;
}
free(b);
b=NULL;
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯