如何用一层for循环打印出一个二维数组

常规通过两层for循环可以比较轻松打印二维数组。

代码如下:

#include <stdio.h>
#define ROWS 3
#define COLS 3
int main()
{
	int a[ROWS][COLS]={1,2,3,4,5,6,7,8,9};
	for(int i=0;i<ROWS;i++)
	{
		for(int j=0;j<COLS;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}

	return 0;
}

那么如何通过一层for循环打印出二维数组全部值呢?

此时需要明白二维数组在内存中是按行存储还是按列存储,将数组a看成一个一维数组,则a在二维数组中的行和列可以用i/ROWS 和i%COLS表示

代码如下:

#include <stdio.h>
#define ROWS 3
#define COLS 3
int main()
{
	int a[ROWS][COLS]={1,2,3,4,5,6,7,8,9};
	for(int i=0;i<ROWS*COLS;i++)
	{
		printf("%d ",a[i/ROWS][i%COLS]);
	}
	return 0;
}
时间: 2024-12-29 11:27:23

如何用一层for循环打印出一个二维数组的相关文章

c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点

1 //题目:找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点. 2 // 3 #include "stdio.h" 4 #include <stdlib.h> 5 int main() 6 { 7 int i,j,k,hang=1,lie=1; 8 printf("输入行"); 9 scanf("%d",&hang); 10 printf("输入列"

找出一个二维数组中的&quot;鞍点&quot;,即该位置上的元素在该行中最大,在该列中最小(也可能没有&quot;鞍点&quot;),打印有关信息.(提示:注意特殊情况:没鞍点或多个鞍点)

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { int a[3][4] = {0}; for(int i = 0;i < 3;i++){ for (int j = 0;j < 4; j++){ a[i][j] = arc4random()%(90 - 10 + 1) + 20; printf("%d ",a[i][j]); } printf("\n&

c语言题目:找出一个二维数组的

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. http://www.qidian

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

求一个二维数组的最大子数组

小组成员:周其范  胡宝月 上课的时候老师布置的题目是求一个二维数组的最大子数组,因为以前的时候老师要求我们做过一个题目就是求一个数组的最大子数组,当时的方法就是利用循环把所有可能算出,然后比较那个最大就是那个,也就是所说的枚举法.因此这次我们同样的想到了枚举法.但当我们讨论的时候发现了二维有些麻烦,所以我俩在想有没有什么别的方法,最后我们想到了其实二维数组和一位数组有相似之处,可以先把二维数组变成一维数组在算. 对于imin和imax之间的的每一列,都相当于一个一维的元素,假设数组是BC,那么

螺旋式打印一个二维数组

问题描述:螺旋式打印一个二维数组.如 1     16     3     2     17 8     6       4     3     23 2     5       7     8     12 21   2       4     6     13 要求打印后顺序为: 1     16   3     2     17   23     12     13   6     4     2     21     2     8   6     4     3     8     7

动态申请和释放一个二维数组

动态申请一个二维数组也很常见,下面是常见的两种形式. //方法1 unsigned char** pImg= new unsigned char*[m]; for(int i=0;i<m;i++){ pImg[i]=new unsigned char[n]; } //方法2 unsigned char** pImg= new unsigned char*[m]; unsigned char* arr= new unsigned char[m*n]; for(int i=0;i<m;i++){

返回一个二维数组中最大联通子数组的和

1 #include <iostream> 2 #include <time.h> 3 #include<string> 4 #include<fstream> 5 #define M 3 6 #define N 4 7 using namespace std; 8 9 int main() 10 { 11 int length[100],num[M][N] = {0},visit[M][N]={0},i=0;//length[100],是把文件中的数组转化

返回一个二维数组最大联通子数组的和

一.题目 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值. 二.设计思想 方法一:首先若要对二维数组进行分析,之前我们已经做过关于一位数组的练习,所以我们可以把它化简成为一个一维数组.再先求每个一维数组的最大子数组和,并记下每行最大一维子数组的下标.这是就会分两种情况:第一种是行之间的最大子数组是相连的,这时就可以直接相加得到:第二种是不相连的,,这时候就把每行的最大子数组看成一个整体,再使每个最大数组块进行相连,求使其相连的最小代价.最后得到的结果就是最大联通子数组的和