3个回答
展开全部
#include<stdio.h>
#include<stdlib.h>/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.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;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
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;/*初始化为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;/*将之前分配的内存空间释放后,把指针置0是一个好的习惯*/
}
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>/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.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;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
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;/*初始化为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;/*将之前分配的内存空间释放后,把指针置0是一个好的习惯*/
}
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;
}
黄先生
2024-12-27 广告
2024-12-27 广告
矩阵切换器就是将一路或多路视音频信号分别传输给一个或者多个显示设备,如两台电脑主机要共用一个显示器,矩阵切换器可以将两台电脑主机上的内容renyi切换到同一个或多个显示器上;迈拓维矩矩阵切换器种类齐全,性价比高,支持多种控制方式,为工程商采...
点击进入详情页
本回答由黄先生提供
展开全部
#include<stdio.h>
#include<stdlib.h>/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.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;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI
C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
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;/*初始化为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;/*将之前分配的内存空间释放后,把指针置0是一个好的习惯*/
}
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>/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.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;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI
C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
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;/*初始化为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;/*将之前分配的内存空间释放后,把指针置0是一个好的习惯*/
}
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<stdio.h>
#include<stdlib.h>/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.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;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI
C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
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;/*初始化为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;/*将之前分配的内存空间释放后,把指针置0是一个好的习惯*/
}
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>/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.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;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI
C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
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;/*初始化为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;/*将之前分配的内存空间释放后,把指针置0是一个好的习惯*/
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询