admin 管理员组

文章数量: 1184232


2024年4月21日发(作者:多语言在线客服系统源码)

软件2013年第34卷第7期 S0FTWARE 国际IT传媒品牌 

C语言中二维数组的输出样式辨析 

刘培元 

(江苏省如皋中等专业学校,江苏如皋226500) 

摘 要:二维数组的定义与输出样式,是广大编程爱好者学习C语言过程中常常遇到的一个易混淆的知识点。本文通过将相 

近概念置于不同情境,进行意义辨析,帮助读者厘清二者的关系。 

关键词:C语言;二维数组;行;列;输出样式 

中图分类号:TP312.1 文献标识码:A DOI:10.3969/j.issn.1003—6970.2013.07.048 

本文著录格式:【i】刘培元.C语言中二维数组的输出样式辨析Ⅱ】.软件,2013,34 :136—137 

O引言 

如何在一维存储器中存放二维数组?在c语言中,将二维 

数组作为按行存放,即放完一行之后放入第二行,以此类推。例 

情境描述:定义一个二维数组im a[3]阡{1’3,5 I’8 }, 

如:二维数组a【3】【4】,先存放a[OJ行的四个元素:a【0】【0La[O】 

该数组为3‘‘f亍”4‘‘歹IJ”,共12个元素,.分别为: 

【11,a[Ol[2l,a[Ol[3】,再存放alll行的四个元泰a[1l[ol,a[1111],all】 

【2】,a[1113J,最后存放a[2】行的四个元素:aI2儿OLa[21[1],a[2】 

【2】,a[2ll3]。即这12个元素在内存中的存储为: 

为什么可以输出为4行3列的样式' 

a[o]【0] 

a[0j[1] 

a[0][2] 

gt[0][3] 

a[1][o3 

a[1][I] 

1二维数组的基本知识 

a[1][2] 

a[I][3] 

1.1二维数组的定义 

a[2][O] 

二维数组定义的一般形式是: 

a[2][1] 

a[2][2] 

类型说明符数组名f常量表达式1】【常量表达式2】 

a[2][3] 

其中“常量表达式1”表示第一维下标的长度,“常量表达 

式2”表示第二维下标的长度。 

通常情况下,我们习惯书写成: 

例如: 

a[0][0],a[0][1],a[0][2],a[0][3] 

int a【31【4】; 

a[1¨0],a[1][1],a[1]f2],al1][3] 

即定义了一个二维的数组,数组名为a;其元素的数据类型 

a[2_J[0J,a[2][1],a[2_j[2],a[2][3] 

为整型;第一维下标的长度是3,第二维下标的长度是4;该数 

这里的按行存储的“行”实际上是“第一维”的意思,不 

组共有12个元素,通常写成容易接受的形式: 

是几何意义上的“行”。 

a[O][Ol,a【O】【1】,a[O][2l,a【O】【3】 

a[1l[O],a[1][1l,a【1】【2】,a[1l[3】 

2二维数组的输出样式 

af2】【OJ,a[2][1l,a[21121,a[21131 

2.1 main{) 

1。2二维数组的存储 

{int i,j,a[31[41={1,3,5,7,2,6,9,8,0,4,6,2}; 

二维数组在概念上是二维的,其下标在两个方向上变化。 

for【i=O;i<2;i++) 

但是,存储器却是一维连续编址的,也就是说存储器单元是按 

{f0r0=0;j<3.j++) 

维线性排列的。 

printI(“%2d”,aIil[j]); 

软件杂志欢迎推荐投稿:zaz ̄@lS8.corn 

136 

软件 (您的文章得到院士的关注) 刘培元:C语言中二维数组的输出样式辨析 

pnnff(“\n”); //换行 

在日常生活中,横向(水平方向)为行,纵向(垂直方向) 

} 

为列,是几何意义上的行和列。 

} 

在前面的“二、二维数组的输出样式”中: 

说明:以数组的第一维下标为主、第二维下标为辅输出, 

第一种输出样式为3行4列 

第一维下标变化时换行。 

2.2 main() 

{int i,j,a【3】【4】={1,3,5,7,2,6,9,8,0,4,6,2}; 

f0r(i=0.i<2;i++) 

{f0r0=0.j<3;j++) 

第二种输出样式为1行12列 

pnnff(“%2d”,a【i】【j】); 

//无换行 

} 

} 

第三种输出样式为4行3列 

说明:以数组的第一维下标为主、第二维下标为辅输出, 

第一维下标变化时无换行。 

2.3 main() 

第四种输出形式为1行12列 

{int i,j,a【3】【4】={1,3,5,7,2,6,9,8,0,4,6,2}; 

f0r【i=0;i<4;i++) 

{for(j=0;j<3;j++) 

pnnff(“%2d”,a叫【i】】; 

pnnff(“\n”); //换行 

4总结 

} 

通常情况下,我们定义了一个二维数组int a[3114】,该数 

} 

组的第一维下标为3,第二维下标为4。习惯上称数组a是一个 

说明:以数组的第二维下标为主、第一维下标为辅输出, 

3“行”4“列”的数组,这是基于该数组在内存中是按行存储 

第二维下标变化时换行。 

的原理而表述的(它在内存中存放的顺序为a【0l【0】、a【0】【1】、 

2.4 void mainO 

a【01【2】、a[Ol[3]、a【1】IO1、a【1】【1】、a[1][21、a[11131、a【2】【0】、 

{int i,j,a【3儿4J={1,3,5,7,2,6,9,8,0,4,6,2}; 

a【2】f1】、a【2】【2]、a【2】f3D。这里的“行”,准确地说是“第一 

for(i=2;i>=O;i~) 

维下标”,不是几何意义上的“行”。 

{for(j=3;j>=O;j一) 

二维数组的输出样式多种多样,可以说千变万化。程序的 

pnnff(“%2d”,a【i】【j】); 

输出结果是几行几列,由实际代码决定。,这里的“行”,准 

//无换行 

确地说是几何意义上的“行”。前面“二、二维数组的输出样式”, 

} 

就是例证。 

综上所述:定义一个二维数组int a【3】【4】,该数组的 

第一维下标为3,第二维下标为4。习惯上称数组a是一个 

3“行”4“列”的数组,这里的“行”和“列”是“第一维下标” 

和“第二维下标”的意思,不是几何意义上的行和列。该数组 

说明:以数组的第一维下标为主、第二维下标为辅输出, 

实际的输出样式是几行几列是由实际的代码处理得到的,这里 

第一维下标变化时无换行。 

的行和列是几何意义上的行和列,也就是通过屏幕输出得到的。 

3日常生活中的行和列 

这是两个不同情境下的“行”,不是一个意义,更不能混为一谈。 

137・ 软件杂志欢迎推荐投稿:http://www.ccomsoft.corn/ 


本文标签: 数组 输出 下标 语言