C语言利用数组计算矩阵乘法

本文比较了各个版本的矩阵乘法计算

IJK版本

c 复制代码
#include <stdio.h>
int main()
{
	int A[2][2] = { 0,1,2,3 };
	int B[2][2] = { 4,5,6,7 };
	int C[2][2] = { 0,0,0,0 };
	int num = 2;
	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			for (int k = 0; k < num; k++) {
				C[i][j] += A[i][k] * B[k][j];
			}
		}
	}

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("C[%d][%d] = %d\t\t", i, j, C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("&C[%d][%d] = %p\t", i, j, &C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");
}

JIK版本

c 复制代码
#include <stdio.h>
int main()
{
	int A[2][2] = { 0,1,2,3 };
	int B[2][2] = { 4,5,6,7 };
	int C[2][2] = { 0,0,0,0 };
	int num = 2;
	for (int j = 0; j < num; ++j) {
		for (int i = 0; i < num; ++i) {
			for (int k = 0; k < num; k++) {
				C[i][j] += A[i][k] * B[k][j];
				printf_s("C[%d][%d] += A[%d][%d] * B[%d][%d] = %d\t\t", i, j, i, k, k, j, C[i][j]);
			}
			printf_s("\r\n");
		}
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("C[%d][%d] = %d\t\t", i, j, C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("&C[%d][%d] = %p\t", i, j, &C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");
	return 0;
}

JKI版本

c 复制代码
#include <stdio.h>
int main()
{
	int A[2][2] = { 0,1,2,3 };
	int B[2][2] = { 4,5,6,7 };
	int C[2][2] = { 0,0,0,0 };
	int num = 2;
	for (int j = 0; j < num; ++j) {
		for (int k = 0; k < num; k++) {
			for (int i = 0; i < num; ++i) {
				C[i][j] += A[i][k] * B[k][j];
				printf_s("C[%d][%d] += A[%d][%d] * B[%d][%d] = %d\t\t", i, j, i, k, k, j, C[i][j]);
			}
			printf_s("\r\n");
		}
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("C[%d][%d] = %d\t\t", i, j, C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("&C[%d][%d] = %p\t", i, j, &C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");
	return 0;
}

KJI版本

c 复制代码
#include <stdio.h>
int main()
{
	int A[2][2] = { 0,1,2,3 };
	int B[2][2] = { 4,5,6,7 };
	int C[2][2] = { 0,0,0,0 };
	int num = 2;
	for (int k = 0; k < num; k++) {
		for (int j = 0; j < num; ++j) {
			for (int i = 0; i < num; ++i) {
				C[i][j] += A[i][k] * B[k][j];
				printf_s("C[%d][%d] += A[%d][%d] * B[%d][%d] = %d\t\t", i, j, i, k, k, j, C[i][j]);
			}
			printf_s("\r\n");
		}
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("C[%d][%d] = %d\t\t", i, j, C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("&C[%d][%d] = %p\t", i, j, &C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");
	return 0;
}

KIJ版本

c 复制代码
#include <stdio.h>
int main()
{
	int A[2][2] = { 0,1,2,3 };
	int B[2][2] = { 4,5,6,7 };
	int C[2][2] = { 0,0,0,0 };
	int num = 2;
	for (int k = 0; k < num; k++) {
		for (int i = 0; i < num; ++i) {
			for (int j = 0; j < num; ++j) {
				C[i][j] += A[i][k] * B[k][j];
				printf_s("C[%d][%d] += A[%d][%d] * B[%d][%d] = %d\t\t", i, j, i, k, k, j, C[i][j]);
			}
			printf_s("\r\n");
		}
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("C[%d][%d] = %d\t\t", i, j, C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("&C[%d][%d] = %p\t", i, j, &C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");
	return 0;
}

IKJ版本

c 复制代码
#include <stdio.h>
int main()
{
	int A[2][2] = { 0,1,2,3 };
	int B[2][2] = { 4,5,6,7 };
	int C[2][2] = { 0,0,0,0 };
	int num = 2;
	for (int i = 0; i < num; ++i) {
		for (int k = 0; k < num; k++) {
			for (int j = 0; j < num; ++j) {
				C[i][j] += A[i][k] * B[k][j];
				printf_s("C[%d][%d] += A[%d][%d] * B[%d][%d] = %d\t\t", i, j, i, k, k, j, C[i][j]);
			}
			printf_s("\r\n");
		}
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("C[%d][%d] = %d\t\t", i, j, C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");

	for (int i = 0; i < num; ++i) {
		for (int j = 0; j < num; ++j) {
			printf_s("&C[%d][%d] = %p\t", i, j, &C[i][j]);
		}
		printf_s("\r\n");
	}
	printf_s("\r\n");
	return 0;
}

外部参考

深入理解计算机系统(第三版)

相关推荐
matlab代码1 小时前
Matlab基于主成分分析PCA人脸识别系统(GUI界面)【源码44期】
开发语言·matlab·人脸识别
m0_738120721 小时前
AI安全实战系列(四):Lab04 Multi-Agent——多智能体攻击分析
服务器·开发语言·人工智能·安全·网络安全·语言模型
Mr__Miss1 小时前
Java 随机数生成器选型指南:Random、ThreadLocalRandom 与 SecureRandom
java·开发语言·python
Risehuxyc1 小时前
PHP数据类型
开发语言·php
Wang's Blog2 小时前
Go-Zero基础入门5: 探究go-zero如何基于gRPC扩展客户端
开发语言·后端·golang·go-zero
zh_xuan2 小时前
c++ span的用法
开发语言·c++·span
caimouse2 小时前
KiSystemStartupBootStack 函数分析
开发语言·reactos
薛定猫AI2 小时前
【深度解析】动态多智能体团队:并行规划、开发与验证的 Python 实战
大数据·开发语言·python
持力行9 小时前
从C struct到C++中的class
c语言·c++