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

外部参考

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

相关推荐
Είναι η κοπέλα3 小时前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
今夜有雨.3 小时前
图像运算、掩膜/ROI 与绘制交互
c语言·数据结构·c++·qt·算法·计算机视觉
大草原的小灰灰4 小时前
Python面向对象编程
开发语言·python
知识分享小能手4 小时前
C学习教程,从入门到精通,C语言概述 —— 知识点详解(1)
c语言·开发语言·学习
东木月4 小时前
Windows C 盘清理指南:安全删除临时文件、缓存与 Prefetch
c语言·windows·安全
Chen_harmony5 小时前
一、C++入门基础
开发语言·c++
学逆向的5 小时前
远程线程注入
开发语言·jvm·网络安全·win32
水饺编程5 小时前
第1章,[Win32 章节]:Windows 的方方面面
c语言·c++·windows·visual studio
阡陌数智5 小时前
RAG 系统的召回退化:向量库、分块、重排全链路问题排查与优化实践
开发语言·人工智能·语言模型·自然语言处理·推荐算法
我就是不信5 小时前
用 C 语言实现一个支持 HTML 与视频的 HTTP(S) 服务器
c语言·html·音视频