用单循环初始化多维数组

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

/**********************************************************************
* 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

用单循环初始化多维数组的相关文章

两种初始化2维数组方法

#define _CRT_SECURE_NO_WARNINGS #include <Windows.h>#include <stdio.h>#include <stdlib.h> void main() { int num[3][4]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { num[i][j] = i * 4 + j + 1; printf("%-6d",

C++二维数组讲解、二维数组的声明和初始化

我们知道,一维空间是一条线,数学中用一条数轴来表达:二维空间是一个平面,数学中用平面坐标系来表达.那么二维数组又是什么样的呢? 线与面 我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点.而所有的数据都是存储在一条线上.如果我们采用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能够存放到表格里. 我们把二维数组的两个下标分别称为行下标和列下标,在前面的是行下标,在后面的是列下标. 那么什么时候要用二维数组呢?一般有两种情况,一种是描述一个二维的事物.比如用1

【Java学习笔记之八】java二维数组及其多维数组的内存应用拓展延伸

多维数组声明 数据类型[][] 数组名称; 数据类型[] 数组名称[]; 数据类型数组名称[][]; 以上三种语法在声明二维数组时的功能是等价的.同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推. 例如: int[][] map; char c[][]; 和一维数组一样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度.  -------------------------------------------------

Java千百问_06数据结构(017)_什么是二维数组

点击进入_更多_Java千百问 1.二维数组如何定义 Java语言中,多维数组被看作数组的数组. 了解一维数组看这里:java中的数组是什么 定义方式和一维数组类似,如下: type arrayName[ ][ ]: type [ ][ ]arrayName; 2.二维数组如何初始化 二维数组初始化和一维数组一样,分为静态初始化和动态初始化 静态初始化 Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同.初始化方式如下: int intAr

C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include <stdlib.h> int main() { int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=34, d2=0, d3

&lt;18&gt;【掌握】二维数组定义+

[掌握]二维数组定义 二维数组: 可以看做是一个特殊的一维数组 ,这个一维数组的每个元素又是一个一维数组 二维数组的定义 数据类型 数组名[第一维的长度(行)][第二维的长度(列)]; int a[2][3]; 理解方法: 1)这是一个特殊的一维数组,一维数组有两个元素 a[0] a[1] a[0] 它又存放了一个一维数组该数组长度为 3 2)定义了一个2行3列的一个矩阵 #include <stdio.h> #define M 3 int main(int argc, const char

【共读Primer】20.&lt;3.6&gt; 多维数组 Page112

C++中的多位数组,严格来说是数组的数组. int ia[3][4]; //大小为3的数组,每个元素是含有4个整数的数组 // 大小为10的数组,每个元素都是大小为20的数组, // 这些数组的元素是含有30个整数的数组 int arr[10][20][30] = {0}; // 将所有元素初始化为 0 初始化多维数组 int ia1[3][4] = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }; // 以下语句等价于上面的初始化 int ia2[3][4] = {

C零基础视频-30-二维数组的定义与使用

目录 二维数组的定义 二维数组的初始化 二维数组的引用 二维数组的定义 type 数组名[行][列] 二维数组的初始化 全部初始化为0: char chAry[2][3] = { 0 }; 全部初始化为特定值: char chAry[2][3] = { 0x00, 0x01, 0x02, 0x10, 0x11, 0x12 }; 或者区分行: char chAry[2][3] = { { 0x00, 0x01, 0x02, }, { 0x10, 0x11, 0x12, } }; 略过某行,部分初始

*二维数组的初始化

package com.chongrui.test; /* *二维数组的初始化 * */ public class test { public static void main(String[] args) { int a[][]=new int[3][4]; System.out.println("输出3行4列的数组"); for(int i=0;i<a.length;i++){ for(int j=0;j<a[i].length;j++){//遍历数组当中的每个元素,