C语言编写程序:求已知两个矩阵x与y之和,结果存到矩阵x中。大学c语言编程题。
矩阵相加需要两个矩阵的行数和列数相同,然后对应位置的数字相加即可。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int** x, ** y; //动态分配内存
int m, n; //矩阵的行数和列数
int i, j; //临时变量
printf("请输入矩阵的行数和列数:");
scanf_s("%d %d", &m, &n);
//申请x内存
x = (int**)malloc(sizeof(int*) * m);
for (i = 0; i < m; i++)
x[i] = (int*)malloc(sizeof(int) * n);
//申请y内存
y = (int**)malloc(sizeof(int*) * m);
for (i = 0; i < m; i++)
y[i] = (int*)malloc(sizeof(int) * n);
printf("请输入%d*%d的矩阵x:\n",m,n);
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
scanf_s("%d", &x[i][j]);
}
printf("请输入%d*%d的矩阵y:\n", m, n);
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
scanf_s("%d", &y[i][j]);
}
printf("x+y=\n");
//计算矩阵的和并存入x
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
x[i][j] += y[i][j];
printf("%d ", x[i][j]); //输出结果
}
printf("\n");
}
//释放内存
for (i = 0; i < m; i++)
{
free(x[i]);
x[i] = 0;
free(y[i]);
y[i] = 0;
}
free(x);
free(y);
x = 0;
y = 0;
return 0;
}
矩阵就是二维数组,双循环逐个元素相加即可
#include <stdio.h>
int main()
{
int x[5][5],y[5][5];
int i,j;
printf("请输入矩阵x数据:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&x[i][j]);
printf("请输入矩阵B数据:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&y[i][j]);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
x[i][j] = x[i][j] + y[i][j];
prinf("矩阵x和y相加结果为:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",x[i][j]);
printf("\n");
}
return 0;
}
1.矩阵要想求和,那必须行数列数都相同
2.矩阵在c语言里其实就是个二维数组
3.双重for循环遍历求和,结果存到数组1里就行了
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
x[i][j]+=y[i][j];
https://www.runoob.com/cprogramming/c-examples-add-matrix.html
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!