用c语言把两个矩阵合为一个矩阵 要求如下

作者&投稿:权郭 (若有异议请与网页底部的电邮联系)
C语言中如何将两个二维数组合并为一个二维数组中。希望高手可以帮我把这个程序写出来,谢谢。~

怎么合并,是通过计算加减法还是排序插入 。下面是将a连接b形成c

#include
#include

#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("分配内存出错
");
exit(1);
}

for(i=0;i<m;i++)
{
x[i]=(int*)malloc(sizeof(int)*n);
if(!x[i])
{
printf("分配内存出错
");
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("
");
}

}

//将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列:
",M,N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);

printf("输入第二个矩阵%d行,%d列:
",M,N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&b[i][j]);

printf("
");
printf("第一个矩阵:
");
Print(a,M,N);

printf("第二个矩阵:
");
Print(b,M,N);

Fun(a,b,c);
printf("合并后的矩阵:
");
Print(c,M+M,N);

Free(a,M,N);
Free(b,M,N);
Free(c,M+M,N);
printf("
");
}

第1个和第2个相加、第3个和第4个相加……按顺序输出矩阵相加的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。若输入的矩阵不为偶数个,最后剩余的矩阵不产生任何输出。

下面是一个可以将两个矩阵合并为一个矩阵的 C 语言程序。该程序中,我们使用了嵌套循环分别遍历两个矩阵,并将它们合并到一个新的数组中。

```c
#include <stdio.h>

#define ROWS 3
#define COLS 3

int main() {
char a[ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
char b[ROWS][COLS] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g', 'h', 'i'}};
char c[ROWS * 2][COLS * 2]; // 合并后的矩阵
int i, j;

// 将 a 矩阵复制到合并后的矩阵的左上角
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
c[i][j] = a[i][j];
}
}

// 将 b 矩阵复制到合并后的矩阵的右上角
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
c[i][j + COLS] = b[i][j];
}
}

// 输出合并后的矩阵
for (i = 0; i < ROWS * 2; i++) {
for (j = 0; j < COLS * 2; j++) {
printf("%c", c[i][j]);
}
}
printf("\n");

return 0;
}
```

在这个程序中,我们首先定义了两个字符型二维数组 `a` 和 `b`,分别表示要合并的两个矩阵。然后,我们定义了一个新的字符型二维数组 `c`,用于存储合并后的矩阵。注意,`c` 的行数和列数分别是 `a` 和 `b` 的两倍。

接下来,我们使用两个嵌套的循环遍历 `a` 矩阵,并将它的每个元素复制到 `c` 矩阵的对应位置。然后,我们再使用另外两个嵌套的循环遍历 `b` 矩阵,并将它的每个元素复制到 `c` 矩阵的右上角。

最后,我们使用两个嵌套的循环遍历 `c` 矩阵,并逐个输出它的每个元素。输出完成后,我们在最后加上一个换行符,以便输出结果更加美观。

需要注意的是,在这个程序中,我们没有对输入数据进行任何检查(例如,矩阵的维度是否相同等)。如果需要确保输入数据的有效性,可以在程序中添加相应的检查代码。

#include "stdio.h"
main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
char b[3][1]={'a','b','c'};
int i,j;
printf("Array a is:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%4d",a[i][j]);
if(j%3==2)
printf("\n");
}
printf("Array b is:\n");
for(i=0;i<3;i++)
{
printf("%4c\n",b[i][0]);

}
printf("The array you want is:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(j<3)
printf("%4d",a[i][j]);
else
printf("%4c",b[i][0]);
if(j%4==3)
printf("\n");
}

}
调试输出结果为:
Array a is:
1 2 3
4 5 6
7 8 9
Array b is:
a
b
c
The array you want is:
1 2 3 a
4 5 6 b
7 8 9 c


用c语言把两个矩阵合为一个矩阵 要求如下
int main() { char a[ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};char b[ROWS][COLS] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g', 'h', 'i'}};char c[ROWS * 2][COLS * 2]; \/\/ 合并后的矩阵 int i, j...

用C语言编写程序(两个矩阵相加)
int C[3][4];int i,j;\/\/矩阵相加:两个矩阵必须行数和列数一样才能相加,\/\/和矩阵的每个元素分别是两个矩阵对应的元素的和 printf("矩阵A+矩阵B=\\n");for(i=0;i<3;i++)\/\/控制行 { for(j=0;j<4;j++){ C[i][j]=A[i][j]+B[i][j];\/\/printf("%3d",C[i][j]);\/...

C语言中求两个矩阵的和
void main(){ int a[3][3];int b[3][3];int i,j,c,x;printf(" 求两个矩阵之和\\n");printf("请选择输入方式\\n");printf("0为随机自主输入,1为人工输入\\n");scanf("%d",&x);if(x==1){ printf("请输入两个3*3矩阵,以回车结束每个数字的输入\\n");for(i=0;i<=2;i++...

c语言求2个3x4的矩阵之和
这个程序定义了两个3x4的矩阵matrix1和matrix2,并计算它们的和存储在sum矩阵中。最后,程序输出sum矩阵。在程序中,使用了两个循环嵌套来遍历矩阵中的每个元素,将两个矩阵的对应元素相加,并将结果存储在sum矩阵中。然后,使用另外两个循环嵌套来遍历sum矩阵,将其逐行输出。以上代码可以用于计算任意大小...

请问如何用C语言实现矩阵求和?
在 C 语言中,实现矩阵求和可以通过遍历矩阵的每个元素并将它们相加来实现。以下是一个简单的示例,展示了如何实现矩阵求和:```c include <stdio.h> int main() { int matrix[3][3] = { {1, 2, 3},{4, 5, 6},{7, 8, 9} };int sum = 0;\/\/ 遍历矩阵的每个元素并求和 for (...

如何用C语言编程实现矩阵相加、相乘
两矩阵相乘,int a[][3]={1,2,3,4,5,6,7,8,9};\/\/A为N×P矩阵,\/\/假设是3*3的矩阵 int b[][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};\/\/B为P×M矩阵,假设是3*5的矩阵 int c[3][5]={0};\/\/结果矩阵3*5 for(int i=0;i<3;i++)for(int j=0;j<5;...

编写一个程序计算两个3*4阶矩阵相加,并打印出结果。
void plus(int a[N1][N2],int b[N1][N2]);\/\/矩阵相加 void print(int a[N1][N2]);\/\/打印矩阵 void input(int c[N1][N2]);\/\/输入矩阵 printf("请输入A矩阵的数值:\\n"); input(a); printf("输入的A矩阵为:\\n"); print(a); printf("请输入B矩阵的数值:\\n"); input(b); printf(...

C语言:编写程序,计算两个3×4矩阵的和?
int main(){ int a[3][4],b[3][4],c[3][4];for(int i=0;i<3;i++)for(int j=0;j<4;j++)scanf("%d",&a[i][j]);printf("\\n");for(int i=0;i<3;i++)for(int j=0;j<4;j++)scanf("%d",&b[i][j]);printf("\\n");for(int i=0;i<3;i++)for(int j...

C语言编程问题:两个矩阵求和
a=(int *)malloc(n*sizeof(int));这样就相当于C++的定义:int n;int a[n];cin>>n;对2位数组操作如下:int **a;int i,m,n;scanf("%d %d",&m,&n);a=(int **)malloc(m*sizeof(int *));for (i=0;i<m;i++)a[i]=(int *)malloc(n*sizeof(int));这样就相当于C++的定义...

c语言,怎么实现矩阵合并?
给你实例程序吧。include <stdio.h>void cpy(int a[][2],int b[][2],int copy[],int,int);int main(void){ int arr1[3][2]; int arr2[3][2]; int copy[100]; int i,j,n,k; printf("Please input n and k(0<=n,k<=3):\\n"); scanf("%d%d",...

安仁县19376584880: 用c语言把两个矩阵合为一个矩阵 要求如下 -
素蚂筋络: #include "stdio.h" main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; char b[3][1]={'a','b','c'}; int i,j; printf("Array a is:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) { printf("%4d",a[i][j]); if(j%3==2) printf("\n"); } printf("Array b is:\n"); for(i=0;i<3;i++) { printf("%...

安仁县19376584880: 用C语言表示两个矩阵相加 -
素蚂筋络: #include "stdafx.h" //这是个什么东东 #include <stdio.h>int main(int argc, char* argv[]) { int i,j,c[4][4]; int a[4][4]={{1},{2},{3},{4}}; int b[4][4]={{0,1},{0,2},{0,3},{0,4},};for(i=0;i<4;i++) //这多了一个分号 { for(j=0;j<4;j++)c[i][j]=(a[i][j]+b[i][j]); } printf("...

安仁县19376584880: c语言怎么把两个一维数组合并成一个?不需要排序 谢谢 -
素蚂筋络: 怎么合并,是通过计算加减法还是排序插入 .下面是将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(...

安仁县19376584880: C语言编程实现两个3x3矩阵的和 -
素蚂筋络: 完整程序#include #include main() { int i,j; int array1[3][3],array2[3][3],sum[3][3]; /*输入数组1*/ for(i=0;i for(j=0;j scanf("%d",&array1[i][j]); /*输入数组2*/ for(i=0;i for(j=0;j scanf("%d",&array2[i][j]); /*计算2个数组的和,存放在sum数组中 */ for(i=...

安仁县19376584880: C语言,我想定义一个函数实现矩阵相加功能,可是矩阵最少也要输入一个列数,我想让行列数都是变量,这个 -
素蚂筋络: #include <stdio.h>#include <string.h>#include <stdlib.h> typedef struct matrix { int **array; int row; int column; } MATRIX, *PMATRIX; void addMatrix( PMATRIX a, PMATRIX b, PMATRIX c ) { int i,j, k; if ( a->row != b->row || a->column != b->column ) ...

安仁县19376584880: 用C语言编写出“2个矩阵的和”程序求2个矩阵的和,怎么用C语言编
素蚂筋络: 用二位数组.具体实现根据矩阵算法,用循环或者嵌套实现.

安仁县19376584880: 如何用c语言实现两个一维矩阵相乘?谢谢!要用2维数组.... -
素蚂筋络: C语言程序:#include "stdio.h"//矩阵乘法 void product(double m1[][3], double m2[][3], double result[][3]);//显示矩阵的元素 void display(double m[][3]); int main() { double m1[3][3] = {{1, 2, 1}, {2, 1, 4}, {3, 4, 5}}; double m2[3][3] = {{1, 0, -1}, {-1, -2, ...

安仁县19376584880: C语言,两个矩阵怎么想加???!!急 -
素蚂筋络: 第1个和第2个相加、第3个和第4个相加……按顺序输出矩阵相加的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行.若输入...

安仁县19376584880: 如何用C++合并下列两个矩阵 -
素蚂筋络: 这很简单,先构造一个4行7列的矩阵,然后依次把a和b中的行列值放进去就可以了,代码如下#include using namespace std ; int main() { int a[4][4] ={ {1, 0, 0, 0},{0, 1, 0, 0},{0, 0, 1, 0},{0, 0, 0, 1} } ; int b[4][3] ={ {1, 0, 1},{1, 1, 1},{1, 1, 0},{0, 1...

安仁县19376584880: c语言 两个矩阵的乘积 -
素蚂筋络: for(int i=0;ifor(int j=0;jfor(int s=0;sret[i][j]+=A1[i][s]*A2[s][j]; lz可以使用matalb来处理大规模的矩阵运算

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网