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