创建一个三维数组

题目:创建一个三维数组,4*4*4个元素,数字随机生成,找出每行最大的数,每面最大的数,以及整个数组中最大的数的地址,具体实现如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void PrintMaxValByIndex(int(*pData)[4][4], int nRows)
{
	int * RowMaxVal[4][4] = { 0 };
	int * PlanMaxVal[4] = { 0 };
	int nMaxVal = 0;
	int i = 0;
	int j = 0;
	int k = 0;
	int * pMaxVal = NULL;
	pMaxVal = &pData[0][0][0];
	for (i = 0; i < nRows; i++)
	{
		PlanMaxVal[i] = &pData[i][0][0];

		for (j = 0; j < 4; j++)
		{
			RowMaxVal[i][j] = &pData[i][j][0];

			for (k = 0; k < 4; k++)
			{
				//行
				if (pData[i][j][k] > *RowMaxVal[i][j])
				{
					RowMaxVal[i][j] = &pData[i][j][k];
				}
				//面
				if (pData[i][j][k] > *PlanMaxVal[i])
				{
					PlanMaxVal[i] = &pData[i][j][k];
				}
				//体
				if (pData[i][j][k] > *pMaxVal)
				{
					pMaxVal = &pData[i][j][k];
				}
			}

			printf("面%d,行%d的最大值:%d,地址:%p\n", i + 1, j + 1, *RowMaxVal[i][j], RowMaxVal[i][j]);
		}
		printf("面%d的最大值:%d,地址:%p\n", i + 1, *PlanMaxVal[i], PlanMaxVal[i]);
	}
	printf("数组最大值:%d\,数组最大值地址:%p\n", *pMaxVal, pMaxVal);
}

void PrintMaxValByPtr(int(*pData)[4][4], int nRows)
{
	int * RowMaxVal[4][4] = { 0 };
	int * PlanMaxVal[4] = { 0 };
	int nMaxVal = 0;
	int i = 0;
	int j = 0;
	int k = 0;
	int * pMaxVal = NULL;
	pMaxVal = *(*(pData + 0)+0)+0;
	for (i = 0; i < nRows; i++)
	{
		*(PlanMaxVal+i) = *(*(pData+i)+0)+0;

		for (j = 0; j < 4; j++)
		{
			*(*(RowMaxVal+i)+j) = *(*(pData+i)+j)+0;

			for (k = 0; k < 4; k++)
			{
				//行
				if (*(*(*(pData+i)+j)+k) > **(*(RowMaxVal+i)+j))
				{
					*(*(RowMaxVal+i)+j) = *(*(pData + i) + j) + k;
				}
				//面
				if (*(*(*(pData + i) + j) + k) > **(PlanMaxVal+i))
				{
					*(PlanMaxVal+i) = *(*(pData + i) + j) + k;
				}
				//体
				if (*(*(*(pData + i) + j) + k) > *pMaxVal)
				{
					pMaxVal = *(*(pData + i) + j) + k;
				}
			}

			printf("面%d,行%d的最大值:%d,地址:%p\n", i + 1, j + 1, *(*(*(RowMaxVal+i)+j)), *(RowMaxVal+i)+j);
		}
		printf("面%d的最大值:%d,地址:%p\n", i + 1, **(PlanMaxVal+i), *(PlanMaxVal+i));
	}
	printf("数组最大值:%d\,数组最大值地址:%p\n", *pMaxVal, pMaxVal);
}
int main()
{
	int Data[4][4][4] = { 0 };
	int i = 0, j = 0, k = 0;
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			for (k = 0; k < 4; k++)
			{
				Data[i][j][k] = rand() % 100;
			}
		}
	}
	printf("数组元素:\n");
	for (i = 0; i < 4; i++)
	{
		printf("面:%d\n", i + 1);
		for (j = 0; j < 4; j++)
		{
			printf("行:%d\n", j + 1);
			for (k = 0; k < 4; k++)
			{
				printf("%d	", Data[i][j][k]);
			}
			printf("\n");
		}
		printf("\n");
	}
	printf("\n");
	PrintMaxValByIndex(Data,4);
	PrintMaxValByPtr(Data, 4);
	system("pause");
	return 0;
}
运行效果如图1所示:

图1 运行效果

posted on 2014-09-15 00:07  三少爷的剑123  阅读(551)  评论(0编辑  收藏  举报

导航