|
发表于 2014-2-20 18:55:19
|
显示全部楼层
数组是一系列数据的集合,对数组数据的访问是通过数组的下标。
数组分一维数组和多维数组,TC最多支持8维数组。
数组的作用是保存大量的数据,实现数据的快速访问。比如扫描拍卖行物品:把同类物品名和最低价存储到一个二维数组、游戏中跑路需要多组坐标,把坐标数据保存到数组等等。 现在来熟悉TC里的数组基础知识。
(关键字中英文对应关系, 数组 - array )
数组的定义
定义数组的方法为:在数组关键字后加方括号括来说明。下面是一个定义数组的例子:
变量 物品=数组[10]
这条语句定义了一个具有10个元素的名为物品的数组。方括号中的维数必须是一个正数值,不能为负数。这个数组只有一对中括号,所以它是一维数组。
下面这样声明是正确的:
复制代码
变量 物品=数组[53]
变量 物品=数组[5*3+5]
变量 物品=数组[5.3]
但是下面这样是错误的定义:
复制代码
变量 物品=数组[5.2-10]
数组的大小如果为浮点数,那么TC在处理的时候,会进行四舍五入处理为整型值。如下:
变量 物品=数组[5.2] // 数组的大小为5
变量 物品=数组[5.6] // 数组的大小为6
数组的访问
数组的访问是通过数组下标来访问的,而且下标的取值范围为0到N-1。如下:
复制代码
变量 物品=数组[10]
表明该物品数组是一维数组,里面有10个数,它们分别为物品[0], 物品[1],……物品[9];千万注意,数组的第一个元素下标从0开始。一些刚学编程的人员经常在这儿犯一些错误。
物品[3]=25
复制代码
物品[3]=25
上面的例子是把25赋值给物品数组的第四个元素,在赋值的时候,可以使用变量作为数组下标。
访问数组中的所有元素时,使用循环的方法访问,一般是一维数组使用一个循环,二维数组使用二层嵌套循环,三维数组使用三层嵌套循环,依此类推,八维数组使用八层嵌套循环访问。
如下是数组的定义与初始化操作:
复制代码
变量 offset = 数组[10] //定义一个大小为10的数组
遍历(下标 = 0; 下标 < 10 ; 下标 ++)
offset[下标]=辅助.随机数(10,30)//产生一个10到30的随机数存入数组各元素里
遍历结束
一维数组举例:
随机5个整数存入数组中,然后把它们从小到大排列并放在同一数组中。(思路:先找出最小的,放在第一个位置,为了防止把原先的数覆盖掉,可以把原先的第一个数和最小数的位置互换)。
复制代码
功能 排序()
变量 值 = array[5]
变量 i=0,j=0,min=0,stmp=0
遍历(5)
值 =辅助.随机数(10,30)// 随机生成5个数
i =i + 1
遍历结束
字符型 输入内容
输入内容 = 字符串.格式化("随机数为:%d,%d,%d,%d,%d",值[0],值[1],值[2],值[3],值[4])
辅助.消息框(输入内容)
//// 开始排序
i=0
循环(i<4)
min=值
j=i+1
循环(j<5)
如果(min>值[j])// 里面的4行语句很重要
min=值[j]
stmp=值
值=值[j]
值[j]=stmp
如果结束
j = j + 1
循环结束
i = i + 1
循环结束
输入内容 = 字符串.格式化("排列后的数据为:%d,%d,%d,%d,%d",值[0],值[1],值[2],值[3],值[4])
辅助.消息框(输入内容)
功能结束
分析:先让第一个值作为基准,如果后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。两个数互换应该这样(stmp=a;a=b;b=stmp;),而不是(a=b;b=a;),想想这是为什么?必须要用一个变量作为桥梁。这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。
转至F1~ |
|