问题:要求矩阵能够动态分配内存,并且能够实现加减乘。请高手帮忙,今晚就要上交!!开始并不知道大小,用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.这个问题有好的意见或
建议,请留言
|