码迷,mamicode.com
首页 > 编程语言 > 详细

用单循环初始化多维数组

时间:2015-04-12 17:50:01      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

         对于编程者来说最常用的多维数组就是二维数组和三维数组,对于更多维的数组方法与本质都是类似的,我在这里只是探讨一下初始化的方法,究竟要用哪种方法,也是因时而异

/**********************************************************************    
* Copyright (c)2015,WK Studios
* Filename:    
* Compiler: GCC,VS,VC6.0  win32  
* Author:WK  
* Time: 2015 3 29
************************************************************************/ 
//用二次循环初始化数组
#include<stdio.h>
#include<time.h>

#define N 4  
#define M 3
int main()
{
	int a[N][M]={0};
	int i=0,j=0,n=0;
	//clock_t start,stop;
	//start=clock();
	for(i=0;i<N;i++)
	{
		for(j=0;j<M;j++)
		{
			a[i][j]=++n;
			printf("%-5d",a[i][j]);
		}
		printf("\n");
		
	}
	//stop=clock();
	//printf("所用时间:%-5f",((double)(stop-start)/CLK_TCK));
	//printf("\n");
	
	return 0;
}


结果如下
技术分享

/**********************************************************************    
 * Copyright (c)2015,WK Studios
 * Filename:    
 * Compiler: GCC,VS,VC6.0  win32  
 * Author:WK  
 * Time: 2015 3 29
 ************************************************************************/ 
//用一次循环初始化数组
#include<stdio.h>
#include<time.h>

#define N 4  
#define M 3
int main()
{
	int a[N][M]={0};
	int i=0,n=0;
	//clock_t start,stop;
	//start=clock();
	for(i=0;i<(N*M);i++)
	{
	  a[i/N][i%M]=++n;     //i/N  确定在哪一行,i%M 确定在那一列,再结合数组元素是线性存储的
     
	printf("%-5d",a[i/N][i%M]);
		  if((i+1)%N==0)
		  {
		    printf("\n");
		  }
	  }
  // stop=clock();
  // printf("所用时间:%-5f",((double)(stop-start)/CLK_TCK));
   //printf("\n");

return 0;
}
 

结果如下

技术分享

/**********************************************************************    
* Copyright (c)2015,WK Studios
* Filename:    
* Compiler: GCC,VS,VC6.0  win32  
* Author:WK  
* Time: 2015 3 29
************************************************************************/ 
//用三次循环初始化三维数组
#include<stdio.h>
#include<time.h>

#define N 3  
#define M 4
#define P 5
int main()
{
	int a[N][M][P]={0};
	int i=0,j=0,k=0,n=0;
	clock_t start,stop;
	start=clock();
	for(i=0;i<N;i++)
	{
		for(j=0;j<M;j++)
		{
			for(k=0;k<P;k++)
			{
				a[i][j][k]=++n;
				printf("%-5d",a[i][j][k]);
			}
			printf("\n");
		}
		
		printf("\n");
	}
	stop=clock();
	printf("所用时间:%-5f",((double)(stop-start)/CLK_TCK));
	printf("\n");
	
	return 0;
}

结果如下:

技术分享


/**********************************************************************    
* Copyright (c)2015,WK Studios
* Filename:    
* Compiler: GCC,VS,VC6.0  win32  
* Author:WK  
* Time: 2015 3 29
************************************************************************/ 
//用一次循环初始化三维数组
#include<stdio.h>
#include<time.h>

#define N 3  
#define M 4
#define P 5
int main()
{
	int a[N][M][P]={0};
	int i=0;
	clock_t start,stop;
	start=clock();
	for(i=0;i<(N*M*P);i++)
	{
		a[i/(M*P)][(i/P)%M][i%P]=i;     //i/(M*P)  确定在哪一面,(i/P)%M 确定在那一行,i%P确定在哪一列,再结合数组元素是线性存储的
		
		printf("%-5d",a[i/(M*P)][(i/P)%M][i%P]);
		if((i+1)%P==0)
		{
			printf("\n");
		}
	}
	stop=clock();
	printf("所用时间:%-5f",((double)(stop-start)/CLK_TCK));
	printf("\n");
	
	return 0;
}

结果如下:

技术分享

用单循环初始化多维数组

标签:

原文地址:http://blog.csdn.net/kai8wei/article/details/45010593

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!