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