怎么合并,是通过计算加减法还是排序插入 。下面是将a连接b形成c
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
//创建矩阵
int ** Create(int m,int n)
{
int i;
int **x;
x=(int**)malloc(sizeof(int*) * m);
if(!x)
{
printf("分配内存出错\n");
exit(1);
}
for(i=0;i<m;i++)
{
x[i]=(int*)malloc(sizeof(int)*n);
if(!x[i])
{
printf("分配内存出错\n");
exit(1);
}
}
return x;
}
//打印矩阵
void Print(int **x,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4d",x[i][j]);
printf("\n");
}
}
//将b合并到a后面
void Fun(int **a,int **b,int **c)
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
c[i][j]=a[i][j];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
c[M+i][j]=b[i][j];
}
//释放矩阵
void Free(int **x,int m, int n)
{
int i;
for(i=0;i<m;i++)
free(x[i]);
free(x);
}
void main(void)
{
int **a,**b;
int **c;
int i,j;
a=Create(M,N);
b=Create(M,N);
c=Create(M+M,N);
printf("输入第一个矩阵%d行,%d列:\n",M,N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("输入第二个矩阵%d行,%d列:\n",M,N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&b[i][j]);
printf("\n");
printf("第一个矩阵:\n");
Print(a,M,N);
printf("第二个矩阵:\n");
Print(b,M,N);
Fun(a,b,c);
printf("合并后的矩阵:\n");
Print(c,M+M,N);
Free(a,M,N);
Free(b,M,N);
Free(c,M+M,N);
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考