C语言 1维~4维矩阵便捷打印函数

293 阅读1分钟

函数功能

封装常用的矩阵打印功能,针对不同的纬度,输出合适的打印格式。

  • 一维矩阵打印结果样例: image.png
  • 二维矩阵打印结果样例: image.png
  • 三维矩阵打印结果样例 449cac38480743da92abf98c2821df64_tplv-k3u1fbpfcp-watermark.png
  • 四维矩阵打印结果样例 image.png

参数说明_myPrintList_1D_float(一维矩阵打印)

  • inArr:数组名
  • len:数组长度
  • decimal:保留小数点后位数

代码

void myPrintList_1D_float(float* inArr, int len, int decimal) {

int i = 0;

if (inArr == NULL) {
	return;
}
if (decimal < 0)
	decimal = 0;
else if (decimal > 3)
	decimal = 3;
else;

for (i = 0; i < len; i++) {
	if (i == 0)
		printf("[");
	if(decimal == 0)
		printf("%.0f", inArr[i]);
	if (decimal == 1)
		printf("%.1f", inArr[i]);
	if (decimal == 2)
		printf("%.2f", inArr[i]);
	if (decimal == 3)
		printf("%.3f", inArr[i]);
	if (i < len - 1)
		printf(",");
	else if (i == len - 1)
		printf("]\n");
}

}

参数说明_myPrintList_2D_float(二维矩阵打印)

  • inArr:数组名
  • xLen:数组一维长度
  • yLen:数组二维长度
  • decimal:保留小数点后位数

代码

void myPrintList_2D_float(float* inArr, int xLen, int yLen, int decimal) {

int i = 0, j = 0;

if (inArr == NULL) {
	return;
}
if (decimal < 0)
	decimal = 0;
else if (decimal > 3)
	decimal = 3;
else;

for (i = 0; i < xLen; i++) {
	for (j = 0; j < yLen; j++) {
		if (j == 0)
			printf("[");
		if (decimal == 0)
			printf("%.0f", inArr[getIndexOfArr_2d(xLen,yLen,i,j)]);
		if (decimal == 1)
			printf("%.1f", inArr[getIndexOfArr_2d(xLen, yLen, i, j)]);
		if (decimal == 2)
			printf("%.2f", inArr[getIndexOfArr_2d(xLen, yLen, i, j)]);
		if (decimal == 3)
			printf("%.3f", inArr[getIndexOfArr_2d(xLen, yLen, i, j)]);
		if (j < yLen - 1)
			printf(",");
		else if (j == yLen - 1)
			printf("]\n");
	}
}

}

参数说明_myPrintList_3D_float(三维矩阵打印)

  • inArr:数组名
  • xLen:数组一维长度
  • yLen:数组二维长度
  • zLen:数组三维长度
  • decimal:保留小数点后位数

代码

void myPrintList_3D_float(float* inArr, int xLen, int yLen, int zLen, int decimal) {

int i = 0, j = 0, k = 0;

if (inArr == NULL) {
	return;
}
if (decimal < 0)
	decimal = 0;
else if (decimal > 3)
	decimal = 3;
else;

for (i = 0; i < xLen; i++) {
	for (j = 0; j < yLen; j++) {
		if (j == 0)
			printf("[\n");
		for (k = 0; k < zLen; k++) {
			if (k == 0)
				printf(" [");
			if (decimal == 0)
				printf("%.0f", inArr[getIndexOfArr_3d(xLen, yLen, zLen, i, j, k)]);
			if (decimal == 1)
				printf("%.1f", inArr[getIndexOfArr_3d(xLen, yLen, zLen, i, j, k)]);
			if (decimal == 2)
				printf("%.2f", inArr[getIndexOfArr_3d(xLen, yLen, zLen, i, j, k)]);
			if (decimal == 3)
				printf("%.3f", inArr[getIndexOfArr_3d(xLen, yLen, zLen, i, j, k)]);
			if (k < zLen - 1)
				printf(",");
			else if (k == zLen - 1)
				printf("]\n");
		}
		if (j == yLen - 1)
			printf("]\n");
	}
}

}

参数说明_myPrintList_4D_float(四维矩阵打印)

  • inArr:数组名
  • idx:数组一维长度
  • idx1:数组二维长度
  • idx2:数组三维长度
  • idx3:数组四维长度
  • decimal:保留小数点后位数

代码

void myPrintList_4D_float(float* inArr, int idx, int idx1, int idx2, int idx3, int decimal) {

int i = 0, j = 0, k = 0, l = 0;

if (inArr == NULL) {
	return;
}
if (decimal < 0)
	decimal = 0;
else if (decimal > 3)
	decimal = 3;
else;

for (i = 0; i < idx; i++) {
	for (j = 0; j < idx1; j++) {
		if (j == 0)
			printf(" [\n");
		for (k = 0; k < idx2; k++) {
			if (k == 0)
				printf("  [\n");
			for (l = 0; l < idx3; l++) {
				if (l == 0)
					printf("   [");
				if (decimal == 0)
					printf("%.0f", inArr[getIndexOfArr_4d(idx, idx1, idx2, idx3, i, j, k, l)]);
				if (decimal == 1)
					printf("%.1f", inArr[getIndexOfArr_4d(idx, idx1, idx2, idx3, i, j, k, l)]);
				if (decimal == 2)
					printf("%.2f", inArr[getIndexOfArr_4d(idx, idx1, idx2, idx3, i, j, k, l)]);
				if (decimal == 3)
					printf("%.3f", inArr[getIndexOfArr_4d(idx, idx1, idx2, idx3, i, j, k, l)]);
				if (l < idx3 - 1)
					printf(",");
				else if (l == idx3 - 1)
					printf("]\n");
			}
			if (k == idx2-1)
				printf("  ]\n");
		}
		if (j == idx1 - 1)
			printf(" ]\n");
	}
}

}