admin 管理员组

文章数量: 1086019


2024年4月22日发(作者:struts流程图)

维普资讯

本栏目责任编辑:谢媛媛 ・・・・・・开发研究与设计技术・ 

C语言循环语句在二维数组中的应用 

从艳,任益夫。刘喜梅 

(河北农业大学海洋学院,河北秦皇岛066003) 

摘要:根据循环语句遍历数组元素的具体方法,阐述相关的应用技巧.实现数组的各种应用.以指导C语言学习者对循环语句和数 

组的理解和应用。 

关键词:循环语句:存储格式:二维数组 

中图分类号:TP301 文献标识码:A 文章编号:1009—3044(2007)13-30111—02 

, 

CONG Yan,KEN Yi—fu,LIU Xi~mei 

Application of C Language Cycling Sentence in Two Demension Army 

(Ocean Conege of Hebei Agricultural University,Qinhuangdao 066003,China) 

Abstract:In this paper,based on the cychng sentence S ̄avehng through the array,various of application techniques of hem are eltaborated 

SO as to instruct the C Language learner to understand and apply the cycling sentence and array. 

Key words:Cycling Sentence;Storage Format;Two Demension Array 

1引言 

数组是一种常见的线性数据结构.在软件工程及其它各个领 

域都有着广泛的应用。对于程序设计语言的初学者来说,数组和 

循环结构程序设计都是重点掌握的内容.这里主要讨论如何利用 

循环语句访问二维数组中的元素。 

2数组的存储结构 

数组是存储于一个连续存储空问中的相同数据类型的数据 

元素的集合,是一种常见的线性数据结构。二维数组在实现存储 

时.主要采用顺序存储方式进行存储.即将二维数组元素按照顺 

序排列在一个连续的存储区域中.根据数组元素的排列顺序可以 

分为按行存放和按列存放两种方式。存储示意图如下: 

pfinff(“%d”,a【 】); 

prinff(“\Il”); 实现换行 /11 

程序中,外循环变量由0变化到2可以实现依次访问二维数 

组的3行。由于C语言中二维数组的下标由0开始.为了和数组 

元素的下标一致,通常情况下循环变量的初始值设置为0,要按照 

行递增的顺序遍历二维数组.循环变量的增量设置为l,循环的终 

值控制二维数组的行数。内循环变量由0变化到3可以实现依次 

访问二维数组的4列。控制的方式同二维数组行的控制方法,由 

此实现二维数组某一行各列的访问。其中内循环体为访问到的每 

个数组元素的具体操作。算法的时间复杂度为O(n2)。 

4循环语句在压缩存储的数组中的应用 

对于一些特殊数组,可以使用压缩存储。特殊数组指的是数 

组中存在大量的值相同的元素或0元素并且这些元素的分布呈 

现一定的规律,。压缩存储的思想是为多个值相同的元素只分配 

个存储空间.对0元素不分配空间。采用压缩存储可以节省大 

(b)按列存储 

在这种情况下,由下标确定元素存储地址非常简单.从下标 

到存储地址的变换可由公式计算得出。变换公式取决于二维数组 

是按行存储还是按列存储。C语言中二维数组是按行存储的,假 

设每个数据元素占L个存储单元.则C语言二维数组中任意一个 

元素aii的存储地址可由下列公式计算得出。 

量的存储空间 因为特殊二维数组值相同的元素或0元素分布呈 

现一定的规律,所以在存储时,它的下标和存储地址之间也存在 

着某种转换关系,利用这种关系可以求出二维数组中任意一个元 

素a 的存储地址。 

例如:用二维数组表示下三角矩阵 

al1 0 0… 0 

Log(i,j)=loe(1,1)+(ni+j)L 

3循环语句在二维数组中的应用 

综合分析二维数组的应用得知.访问二维数组中的所有元素 

是应用的基础。由于二维数组的存放及数组元素的下标存在一定 

a21 a22 0… 0 

a31 a32 a:3:3…0 

的规律.可以通过双重循环语句运用这种规律实现二维数组中元 

素的遍历。这里数组元素的遍历指的是按照某种线路依次访问数 

组中的每个元素。 

anl an2 an3 。”ann 

实现方法的主要思想是:利用外循环变量控制数组元素行下 

标的变化,利用内循环变量控制数组元素列下标的变化。利用循 

环体实现每个访问到的数组元素的具体操作。 

例如:要按行输出数组中的所有元素,程序如下: 

main0 

{int a[3l[4l={{1,2,3,4l,{5,6,7,8l,{9,10,ll,1211; 

且初始化 / 

因为矩阵中的下三角部分只有n(n+1)/2个非0元素,所以用 

个连续的区域存储这些值即可。存储方式仍采用按行存储,存 

储结构示意图如下: 

1 I a21 l n-z2l a31 l a32 

二维数组中任意一个元素aii的存储地址可由下列公式计算 

得出。 ・ 

定义数组并 

k=i(i一1)/2+j一1 

例如:要按行输出数组中的所有非0元素.程序如下: 

int i,j; /*i为外循环控制变量,i为内循环控制变量 / 

for(i-O;i<=2;i++) 

main0 

{int a[41[41={{1,0,0,0l,{2,3,0,0l,{4,5,6,0l,{7,8,9,1011; 

组并且初始化 / 

定义数 

{f0r6-0;j<=3 ++) 

收稿日期:2007-06—11 

作者简介:& ̄(1973一),女,河北秦皇岛人,助讲,主要从事C语言程序设计和数据库原理教学工作;任益夫(1974-),男,河北昌黎人,助讲 

主要从事计算机原理教学工作;刘喜梅(1970一),女,河北辛集人,副教授,主要从事英语教学工作和信息技术资料翻译。 

111 

维普资讯

开发研究与设计技术・・・・・・ 

5结束语 

本栏目责任编辑:谢媛媛 

数组元素的具体操作。算法的时间复杂度为O(nz)。 

遵循以上分析、设计、实现的编程思路,可以使用循环语句方 

便、灵活的访问数组中的数组元素以实现各种具体的功能。 

int i,j; /*i为外循环控制变量,i为内循环控制变量 , 

f0 =0;i<=3;i++) 

{f0 =0 <=i ++) 

printf(“%d”,a【i删); 

printf(“\n”); 实现换行 川 

程序中,外循环变量由0变化到3可以实现依次访问二维数 

参考文献: 

【11谭浩强.C语言程序设计【M】.北京:清华大学出版社,1991. 

[2】尹绍宏.数据结构概论【M】.北京:清华大学出版社,北京交通 

大学出版社.20o4. 

组的4行。由于每列只存储了非0元素.而非0元素个数正好和 

外循环变量变化同步.所以内循环变量由0变化到i可以实现依 

次访问二维数组的每行的所有非0列。内循环体为访问到的每个 

(上接第C023页) 

由假设①和消息(4),根据规则⑥得: 

U sees{(r,s),Nl ks-I; 

如果P看到用自己有效公钥加密的信息,则P可以看到解 

密的信息。 

4.2初始信任与推证结果 ~ 

BAN逻辑是基于初始信任.使用推理规则来分析的。在分析 

协议之前.先要假设一组初始信任,随着协议的运行,每接收到一 

条消息都映射到信任集.结合初始信任(初始信任在协议运行时 

是不变的),用推理公式推出新的信任.到最后信任集满足所要达 

到的目标,则认为协议是正确的,如果信任集不能满足,则可以引 

导发现协议的缺陷。 

不同的密码协议.需要推证不同的结果。在多播数据源认证 

协议中.主要的目标是消息发送者S要向消息接收者U证明其身 

份,证明消息是由S发给U的。而在基于ECC的多播数据源认证 

协议中.就是要U相信自己所收到的签名(r's)正是由S生成并发 

送的。因此.信任达到以下目标,我们就认为源认证是完整的。 

即:U believes X:U相信所收到的签名X是真实的;U be. 

1ieves S believes X:B相信A相信自己生成的签名X。 

4.3协议模型化 

只考虑用户U是合法的情况.数据传输前的准备阶段模型化 

为: ‘ 

再由假设③,根据规则②得: 

U believes S said f(r's),Nl; 

再根据假设⑤和规则⑤③得: 

U believes S believes{(r,s),Nl;(a) 

由假设④和fa),根据规则④得: 

U believes{(r,s),Nl;(b) 

因此根据(a)、(b)即有: 

B believes X:B相信所收到的签名X的真实性:B believes A 

elbieves X:B相信A相信自己生成的签名X。 

最终的信任集表明,基于ECC的多播数据源认证协议的工作 

是完整的、没有漏洞的.实现了多播环境下数据源认证的目标。 

5协议性能分析 

该认证协议的优点表现在:第一,由于采用以ECC为基础的 

消息(1): 

s—》Leade,((砌l Re quest,5r口s D 三日 

ECDSA,因此协议具有很强的可认证性:第二,与其他的公钥算法 

如RSA、DSA相比ECDSA的密钥规模更小(163位的ECDSA密 

钥与1024位RSA密钥具有同等的安全强度),因此协议生成的签 

名信息较小;第三.由于公钥签名算法本身可以完全抵抗同谋破 

解,因此协议可以完全抵抗同谋破解;第四,发送方在发送端对每 

则消息进行签名,因此对底层网络没有任何可靠性的要求而且 

/D,Ⅳ)r.)i. 

不会产生延时。 

该协议的不足之处在于.在签名密钥频繁更换时需要计算预 

存储矩阵的工作量较大.但是由于采用非在线的方式计算,所以 

可以弥补这方面的不足;另外,采用公钥签名方案一般不需要频 

繁更换密钥。 

消息(2): 

r U {{ ̄smanlD.S一119. 

— 

册 )‘ 

消息f3): 

Laader-÷S.((A//ow ., ̄smonlD,册£ )南 

6结束语 

本文提出的基于ECDSA的多播数据源认证协议,可以有效 

的实现多播数据源的认证.在军事、国防等高安全需求领域的应 

数据传输阶段模型化为: 

消息(4): 

S_÷U:(((r,s),Ⅳ)rt)屯 

由于只考虑合法用户的情况,初始化阶段就是用户合法化的 

用更为有效,而且随着计算机处理能力的提高,该认证协议的效 

率将越来越高。 

过程,而消息传输前的准备阶段的消息(1)(2)(3)的分析与(4)完全相 

同,因此此处只给出(4)的分析。 

4.4协议分析 ・ 

参考文献: 

『1]Ahmet M.Eskicioglu.Multimedia Security in Group Communi- 

cations:Recent Progress in Key Management,Authentication,and Wa- 

我们先给出假设:①U believes PK(u;Ku);②S believes PK(S; 

KS);③U believes PK(S;KS);④U believes S controls(r's);⑤U be. 

1ieves#fN)。前2个假设U相信KU是U的公钥,S相信KS是S 

的公钥.因为在初始化阶段就要完成密钥生成,所以只要是合法 

用户都已经有其公钥和私钥。而本文只考虑合法用户的情况,因 

此所涉及的用户均有自己的公钥和私钥,所以这2个假设是可行 

termarking『C IASrIED International Conference on Communications 

and Computer Networks,Cambridge,M US November 4—6'2oo 

【2]Mj.Moyer,J.R.Rao,P.Rohatgi.”A survey of security issues 

in multicast communications”【C1.IEEE Network,1999,13(6),12-23. 

『3lElsayed Mohammed,A.E.Emarah and Kh.E1一Shennawy, 

Elliptic Curve Cryptosystem on Smart Cards,IEEE,Arab Academy 

for Science and Technology.20o1. 

的。假设③是用户u相信s的公钥是l(S,因为协议的前提条件假 

设中提出当用户申请加入多播组时,表明该用户是信任Leader及 

IJeader所发送的消息,而U是通过Leader获得S的公钥的,因此 

【41Don Johnson,Alfred Menezes.The Elliptic Curve Digital 

Signature Algorihm(tECDSA).Techical Report CORR 99—34,Dept. 

of C&O.University of Waterloo,Canada.Also available from http:// 

w、^ .cacr.math.uwaterlo.ca. 

u完全可以相信Ks是s的公钥。假设④是u相信s能够生成签 

名信息X.由于签名信息X的确实由发送方S生成的,因此假设 

④是合理的。假设⑤是u相信N是新鲜的,由于N本身就是新鲜 

数.故而假设⑤是可行的。因此,上述的5个假设都是合理的。协 

议分析的过程如下: 

『5]Hankeson D,Lopezr J,Menezes A.Sofwatre implementation 

of elliptic curve cryptography over binary fields【AI.Cryptographic 

Hardware and Embedded Systems CHES 2000『C1. Berlin, Ger 

many:Springer Verlag.200o:l一24. 

『61范红,冯登国.安全协议理论与方法【M】.科学出版社, 

20o3.10. 

1 12 1{ 电脑知识与技术 


本文标签: 数组 元素 循环 协议