c语言之矩阵

文章目录

    • 1.矩阵乘积
    • 2.矩阵转置

1.矩阵乘积

#include
#include
#define N 2  //矩阵1行数
#define M 3  //矩阵1列数  矩阵2行数
#define P 2  //矩阵2列数
int main()
{
	//矩阵1列数==矩阵2行数
	int i, j, k, a[N][M], b[M][P], c[N][P], s;
	//第一个矩阵2行3列
	printf("input matrix A[2][3]\n");
	for (i = 0; i < N; i++)
		for (j = 0; j < M; j++)
			scanf("%d", &a[i][j]);
	//第二个矩阵3行2列
	printf("input matrix B[3][2]\n");
	for (i = 0; i < M; i++)
		for (j = 0; j < P; j++)
			scanf("%d", &b[i][j]);
	//计算方式:矩阵1的行*矩阵的列
	//最终得到矩阵为N行P列
	for (i = 0; i < N; i++)      //每一行
	{
		for (j = 0; j < P; j++)  //每一列
		{
			for (k = 0, s = 0; k < M; k++)   //每一列的组成
				s += a[i][k] * b[k][j];      //a的i行 b的j列固定
			c[i][j] = s;                     //k访问a的行 b的列
		}
	}
	//得到的矩阵2行2列
	printf(" matrix C[2][2]\n");
	for (i = 0; i < N; i++)
	{
		for (j = 0; j < P; j++)
			printf("%6d", c[i][j]);
		printf("\n");
	}
	return 0;
}

c语言之矩阵_第1张图片

2.矩阵转置

#include
#include
#define N 2
#define M 3
#define P 2
int main() 
{
	int i, j, a[N][M], b[M][P];
	for (i = 0; i < N; i++) 
	{
		for (j = 0; j < M; j++) 
			scanf("%d", &a[i][j]);		
	}
	for (i = 0; i < M; i++)         //输入2行3列
	{                               //转换以3行2列去访问
		for (j = 0; j < N; j++)     //并且i j转换改变a的元素排列
			b[i][j] = a[j][i];		
	}
	for (i = 0; i < M; i++)
	{
		for (j = 0; j < N; j++) 
			printf("%d ", b[i][j]);		
		printf("\n");
	}
	return 0;
}

c语言之矩阵_第2张图片

你可能感兴趣的:(C语言经典题目,c语言,矩阵,算法)