论《C语言程序设计》中的数组 | 关键字:程序设计,语言,GH,KL,EF,CD,yz,AB,MN,O 发布时间:2011-08-21 |
福建电脑
2010年第7期
论《C语言程序设计》中的数组
武丽娟
(长治医学院计算机中心山西长治046000)
【摘要】:数组作为.C语言中构造数据类型的一种,是c语言中比较复杂的数据类型之一。文章通过介绍数组、数组变
量的概念以及数组类型,结合具体实例分析,以便于掌握数组的使用方法。
【关键词】:C语言;数组;下标;
1、数组的概念
程序设计中.为了处理方便,把具有相同类型的若干变量按
有序的形式组织起来.这些有序排列的同类数据元素的集合称
为数组。数组中的每一个元素都属于同一个数据类型。用一个统
一的数组名或下标来唯一地确定数组中的元素。在C语言中.数
组属于构造数据类型。一个数组可以分解为多个数组元素.这些
数组元素可以是基本数据类型或是构造类型。因此按数组元素
的类型不同.数组又可分为数值数组、字符数组、指针数组、结构
数组等各种类别。
2、数组类型
2.1一维数组
2.1.1一维数组的定义
一维数组的定义形式:
类型说明符数组名【常量表达式】;
类型说明符是任意一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数.也称为数组
的长度.可以是整型常量或整型表达式。
例如:intn[51;
这条语句定义了一个具有5个整型元素的名为11数组。这
些整数在内存中是连续存储的。
2.1.2一维数组的初始化
给数组赋值的方法除了用赋值语句对数组元素逐个赋值
外.还可采用初始化赋值和动态赋值的方法。
数组初始化赋值是指在数组说明时给数组元素赋予初值。
数组初始化是在编译阶段进行的。这样将减少运行时间,提高效
率。
例如:intarray[5]=[1,2,3,4,5l;
还有一部分情况是在程序执行过程中。对数组作动态赋值。
例如:mainO
I
inta【5】,n;
for(n=O;n<5;n十卜1
fa[n】=Il;
Primf(”%5d”,a[nD;l
}
2.2二维数组
2.2.1二维数组的定义
二维数组一般形式是:
类型说明符数组名【常量表达式l】[常量表达式2】;
其中常量表达式1表示第一维下标的长度.常量表达式2
表示第二维下标的长度。C语言对二维数组采用的定义方式.使
我们可以把二维数组看作是一种特殊的一维数组.它的元素又
是一个一维数组。
例如:
inta【3】【4】;说明了一个三行四列的数组,数组名为a,其下
标变量的类型为整型。该数组的下标变量共有3x4个,即:
a[01[01,a【0】【1】,a【0】【2】,a【0】【3】
a【lⅡ0】,a【1】[1】,a[1][21,aO][3】
a【2】【0】,af2】【1】,a【2】【2】,a【2】【3】
在c语言中.二维数组中元素是按行排列的,即在内存中先
顺序存放第一行的元素,再存放第二行的元素。
2.2.2二维数组的初始化
二维数组初始化也是在类型说明时给各下标变量赋以初
值。二维数组可按行分段赋值。也可按行连续赋值。例如对数
组a【5】【3】:
11按行分段赋值可写为:
inta【5】[3】=180,75,92},{61,65,711,{59,63,70},185,87,9HD},{76,
77,85}l;
∞按行连续赋值可写为:
Inta【5】【3】={80,75,92,61,65.71,59,63,70,85,87,90,76,77,85l;
这两种赋初值的结果是完全相同的。
和一维数组一样。二维数组也可作动态赋值.它常常和二重
循环联系在一起。
例如:
main0
{i11ti,j,n【3]【4】;
for(i=0;i<3;i++)
for(j==o.j<4;j++)
{scanf(”%d”,&a【i】U】);
prinff(”%5d",4i]Ij9;)
l
2.3字符数组
2.3.1字符数组的定义
用来存放字符数据的数组就是字符数组。在c语言中没有
专门的字符串变量.通常就是用一个字符数组来存放一个字符
串。字符数组中一个元素存放一个字符。字符数组的定义形式和
数值数组类似。
2.3.2字符数组的初始化
字符数组可以在定义之后用赋值语句加以赋值。
例如:chara【5】;
401=、F;
41}=、h-;
a[2】-、r;
a[3】=、一;
a【4卜、矿;
由于字符型与整型是互相通用的.故上面的定义也可以可
写为:inta【5】;但这时每个数组元素占2个字节的内存单元。
字符数组也允许在类型说明时作初始化赋值。
例如:charc[10】=f、c、f、f矿,、r,矿,g-,r,‘旷,、m、l;
C语言允许用字符串的方式对数组作初始化赋值。例如:
charc口={乞,7,■0,’,o,,,gj,rj,aj,m,1.可写为:
charc口=f¨Cprogram”l;或去掉fj写为:
charcO=”Cprogram”:
用字符串方式赋值比用字符逐个赋值要多占一个字节。用
于存放字符串结束标志∞’。
除了上述用字符串赋初值的办法外,还可用prinff函数和
万方数据
换页
2010年第7期福建电脑
205
seanf函数一次性输出输入一个字符数组中的字符串.而不必使
用循环语句逐个地输入输出每个字符。
voidmin0
I
charcrl=”cprogram’’:
printf(”%g\Il”,c);
l
注意在本例的prinff函数中,使用的格式字符串为”%s”,表
示输出的是一个字符串。而在输出表列中只给出数组名即可。
不能写为:prill坂”%s”,cD。
2.4指针数组
2.4.1指针数组的定义
一个数组,其元素均为指针类型数据,称为指针数组。也就
是说,指针数组中的每一个元素相当于一个指针变量。
指针数组的定义格式为:
类型名+数组名【数组长度】;
例如:float+pf31;
因为下标运算符口的优先级高于指针运算符?,因此P先与
[3]结合,形成“3】形式,这显然是数组形式,"fit3个元素。然后
再与P前面的n利结合,”剃表示此数组是指针类型的.每个数组
元素(相当于一个指针变量)都可指向一个float变量。上述定义
等价于:float+(p[3】);
说明P是一个含有3个元素的数组.数组元素为指向float
型变量的指针变量。
又如:
int*pnf51;严定义一个5个元素的指针数组,数组元素为
指向int型变量的指针变量},
2.4.2指针数组引用
不论指针数组是什么类型.指针数组的每个数组元素都用
来保存一个地址值.在TurboC下,每个数组元素是一个an.
signedint型变量.占用2个字节。
指针数组定义后.可以使数组元素指向一个变量和其他数
组的首地址。下面是一个指针数组定义和引用的例子。
mainO
{
inti;
charcl口=”How”;
charc2口=”are”;
char+c3=”you”:
char*pArray[3];
pArray[0]=cl;
pArray[1]=c2;
pAxray[2]=c3;
f0坪卸;i<3;i++)
pnntfj(“%s”.pArray[i]);
l
程序运行的结果为:
How
areyou
说明:
(1)程序中cl,c2被定义为字符数组并初始化;c3是一个指
针变量.指向字符串所在字符数组的首地址。
(2)语句char*pArray[3];fi!Y-了三个元素的指针数组pAr-
ray.数组元素是指向char型变量或数组的指针变量。
(3)语句pA瓶y【0】=c1;将字符数组cl的首地址赋给pArray
『01,指针变量pArray[O]指向了c1的首地址。
(4)for循环中,语句pfinff(”%s”,pArray[i]);依次打印了三个
字符数组的内容。比如,pA眦y【o】里存放了cl的首地址,pfinff
(”%s”,pArray[0])和prinff(”%s”,c1)的作用是相同的。
3.小结
3.1数组是程序设计中最常用的数据结构。要掌握数据的定
义方式。
3.2数组的赋值常采用初始化赋值和赋值语句方式赋值。在
用赋值语句赋值时,不能整体赋值,而必须采用循环语句法。
参考文献:
1.谭浩强《c语言程序设计》清华大学出版社【M】,2002
2.谢乐军《c语言程序设计及应用>冶金工业出版社【M】,2009
?+?+-+-+-+-+-+—+-+-?●一—+-+?+-+-+?—+一-—●一-—+——+—+一?●-??卜——卜—+-+-—●一-+-—●一?+?+-+-+—+—。。+一一‘P—‘_一-’●’‘—卜-+-+-+。‘●。。’●‘-。‘+一。+-+?+?
(上接第210页)
整个教学过程中选择一个可行的综合性的工作项目.提取典型
性工作任务.将工作任务合理有序化后.对每一项工作任务分析
所涉及的相关知识、技能和职业素质,设计系列学习情境;针对
每一种学习情境以项目为导向.以任务为驱动,逐级深化,层层
包含.构成一个由浅入深的知识学习与技能训练有机结合的体
系。
根据本门课程的特点和学生的实际情况.在整个课程教学
中,以开发学生们比较熟悉的”教学成绩管理系统”项目为主线。
以完成项目开发的典型工作任务的过程作为教学活动的中心.
由浅入深.由简单到复杂.从枯燥的理论教学转变为直观的实践
操作.既提高了学生的学习兴趣。又培养了本课程所要求的职业
能力。
2.2案例教学法
在每次课堂教学中.又以项目的一个实例的层层推进来驱
动课堂教学的开展。通过采用案例教学,讲解与任务相似的案
例.使学生掌握完成任务所需的知识和技能。从而实现知识点的
有效过渡和深化。
2.3启发引导和分组协作
整个课堂教学内容围绕”教学成绩管理系统”的项目开发展
开.而在课堂教学的同时,为了进一步提高学生的实践能力。在
实验课时,将学生分组同步开发”图书管理信息系统”。每个小组
大致4-5人,学习小组的形成以教师组织和学生自发组织相结
合.小组内部成员分工协作,遇到问题时相互讨论彼此合作,主
动积极地参与开发任务的完成.从中既可以建构出自己对学习
内容的系统知识.又能够完成整个小组的共同目标。不同组之问
可以相互比较效果。得出最佳方法,互相学习,取长补短。这样,
不仅增强了学生学习的兴趣.还提高了他们与他人合作的能力。
老师主要在下面巡查指导.如发现共性问题时。进行启发引导学
生找出解决问题的方法。
3.结束语:
笔者在近二届学生《数据库原理与应用》课程教学中,基于
项目开发的实际工作过程调整教学内容后.将项目导向、任务驱
动和案例教学法应用到教学设计中,并结合课程的特点,对该教
学方法进行了不断的改进和具体化,实践证明,教学效果显著。
参考文献:
【1】1赵彦.高职SQLServer2000课程教学改革的探索田.软件导刊,2009
(第8卷第1期).
【2】2池瑞楠.高职<大型数据库)课程的教学设计及实或探索Ⅱ】.职业教育
研究,2007(g03期)
【3l程录度,王志立.陆骥.任务驱动法在<大型数据库)课程教学中的应
用探索D】.高教论坛.2009(g六期).
万方数据
换页
| 上一篇:补虚平喘膏穴位敷贴对COPD患者细胞免疫和BODE评分指数的影响 下一篇:没有了 |
| | ::::
支付方式 :::: | | |
| ::::
服务热线 :::: | (周一至周五8:30-17:30)
| (周六至周日9:00-18:00)
|
服务电话: | 020-61131011 | 020-61131022 转82 | 传真: | 020-61131022 | 电子邮件: | paper@126.com | paperease@vip.163.com | 服务QQ: | 130009919 | 130008818 |
| |
| :::: 热点文章 :::: | | |
| :::: 相关文章 :::: | | |
|