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;
}

外部参考

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

相关推荐
Data_Journal6 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy
豆角焖肉6 小时前
SSM 聚合项目搭建:多 Maven 模块项目
开发语言·python·pycharm
Frank_refuel6 小时前
【C++八股】面向对象
开发语言·c++
m0_380743877 小时前
为 OpenAI 兼容接口配置教程
开发语言·python·node.js
M78佐菲8 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
万邦科技Lafite8 小时前
阿里巴巴拍立淘按图搜索商品API返回值实践:提升用户购物满意度的关键措施
开发语言·api·开放api·电商开放平台·京东开放平台
小小龙学IT9 小时前
Qt 6 跨平台开发完全指南:从信号槽机制到实际项目落地
开发语言·qt
leisoo80979 小时前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
wWYy.9 小时前
C++与C的区别
c语言·c++
敢敢のwings9 小时前
智元 GO-2 与 AgiBot-World 深度解读
开发语言·后端·golang