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

外部参考

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

相关推荐
像风一样的男人@5 小时前
python --基于scp的文件传输助手
开发语言·python
一条破秋裤5 小时前
SDIO Wi‑Fi 设备的驱动向insmod + 反向rmmod
开发语言·php
m0_639906945 小时前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
Evand J5 小时前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
GIS数据转换器5 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
weixin_417396836 小时前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
熊猫钓鱼>_>6 小时前
鸿蒙PC构建实战:hvigor modelVersion 降级 + schema 清理 + ArkTS 编译三连坑完整复盘
开发语言·华为·ai编程·harmonyos·openharmony·数据·ai生成
FRing036 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
1024奇点6 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源
LDR0066 小时前
LDR6100 智能遥控器精品软文:Type-C 充电口与低功耗量产维护
c语言·开发语言