如何用一个for循环打印出一个二维数组
2017-07-17 09:59
148 查看
解析
常规的可以通过两层for循环嵌套来进行二维数组的输出,设二维数组array[MAXX][MAXY],其中MAXX表示是二维数组的行数,MAXY表示的是二维数组的列数。
代码
而题目要求是只使用一次for循环
因为二维数组在内存中默认是行存储的;
所以可以将数组array看成一个一维数组,i 标识该数组在一维数组中的位置。则array在二维数组中的行号和列号分别为[i/MAXY],[i%MAXY];
实现代码如下:
拓展
三维数组
结果 1,6,3,5,4,15,3,5,33,23,12,7
常规的可以通过两层for循环嵌套来进行二维数组的输出,设二维数组array[MAXX][MAXY],其中MAXX表示是二维数组的行数,MAXY表示的是二维数组的列数。
代码
#include <stdio.h> #define MAXX 2 #define MAXY 3 void printArray() { int array[MAXX][MAXY] = { 1,2,3,4,5,6}; for(int i = 0;i<MAXX;i++) for(int j = 0;j<MAXY;j++) { printf("%d\n",array[i][j]); } } int main() { printArray(); return 0; }
而题目要求是只使用一次for循环
因为二维数组在内存中默认是行存储的;
所以可以将数组array看成一个一维数组,i 标识该数组在一维数组中的位置。则array在二维数组中的行号和列号分别为[i/MAXY],[i%MAXY];
实现代码如下:
#include <stdio.h> #define MAXX 2 #define MAXY 3 void printArray() { int array[MAXX][MAXY]={1,2,3,4,5,6}; { printf("%d\n",array[i/MAXY][i%MAXY]); } } int main() { printArray(); return 0; }
拓展
三维数组
#include <stdio.h> int main() { int a[2][2][3] = {{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}; for(int i =0;i<12;i++) printf("%d\n",a[i/6][(i/3)%2][i/2]): printf("\n"); return 0; }
结果 1,6,3,5,4,15,3,5,33,23,12,7
相关文章推荐
- 如何用一层for循环打印出一个二维数组
- 问题2:如何用一个for循环打印出一个二维数组?
- java如何高效打印一个二维数组(不用递归,不用两个for循环)
- 如何用一个for循环打印出一个二维数组
- 用一个for循环打印出一个二维数组
- 用一个for循环打印出一个二维数组
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- java高效打印一个二维数组的实例(不用递归,不用两个for循环)
- 在java中如何用 for循环打印出一个菱形
- 如何打印一个棱形
- C语言如何打印一个数组排列组合?
- 如何设置报表在一个展示却分页打印
- java中如何定义一个二维数组
- JAVA语言如何用星号打印出一个近似圆
- 找出一个二维数组的鞍点,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息。
- 一个二维数组以顺时针螺旋的方式打印出来
- 关于 “如何传递一个大小不定的二维数组给函数” 的一个小想法
- C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?
- 在vc中调试,如何使一个for循环执行100次,而不退出for循环(调试方法)
- 如何写一个可以设置等级的打印log,类似于 Debug版本 和release版本。