您当前的位置: 百科371电脑/网络C/C++ → 电脑/网络内容 退出登录 用户管理 用户注册
本类热门文章
相关文章
中原建材网
C语言矩阵问题,十万火急!

减小字体 增大字体

问题:要求矩阵能够动态分配内存,并且能够实现加减乘。请高手帮忙,今晚就要上交!!开始并不知道大小,用malloc 和free.  

#include <stdio.h>
#include <malloc.h>
int **jianli(int n,int m)
{
int **p;
int i,j;
printf("putin juzheng");
p=(int **)malloc(n*m*sizeof(int));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",*(p+i)+j);
return p;
}
int **plus(int **p1,int **p2,int n,int m)
{
int i,j;
int **p;
p=(int **)malloc(n*m*sizeof(int));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(*(p+i)+j)=*(*(p1+i)+j)+*(*(p2+i)+j);
return p;
}
int **jian(int **p1,int **p2,int n,int m)
{
int i,j;
int **p;
p=(int **)malloc(n*m*sizeof(int));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(*(p+i)+j)=*(*(p1+i)+j)-*(*(p2+i)+j);
return p;
}

int **cheng(int **p1,int **p2,int n,int m)
{
int i,j,k;
int **p;
p=(int **)malloc(n*m*sizeof(int));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(k=0;k<m;k++)
*(*(p+i)+j)+=*(*(p1+i)+k)-*(*(p2+i)+k);
return p;
}
void print(int **p,int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++)
printf("%d",*(*(p+i)+j));
}
}

void main()
{
int **p[5];
int n,m;
printf("putin hangshu,lieshu ");
scanf("%d%d",&n,&m);
p[0]=jianli(n,m);
p[1]=jianli(n,m);
p[2]=plus(p[0],p[1],n,m);
print(p[2],n,m);
p[3]=jian(p[0],p[1],n,m);
print(p[3],n,m);
p[4]=cheng(p[0],p[1],n,m);
print(p[4],n,m);
}
改过了,生成能通过,但运行以后还是有问题,有高手看到的话指点下

如果你对要求矩阵能够动态分配内存,并且能够实现加减乘。请高手帮忙,今晚就要上交!!开始并不知道大小,用malloc 和free.这个问题有好的意见或 建议,请留言
[] [返回上一页] [打 印]
电脑/网络评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

中原建材网 简单版 站长QQ:382546553