实验目的
➢了解数组的概念。
➢掌握静态数组与动态数组的特点。
➢学会使用数组进行程序编写解决实际问题。
【实验7-1】从键盘上输入10个整数存入数组,然后按输入顺序的逆序输出这10个数。
方法分析:
① 输入方法的选择:要求从键盘输入10个整数,可以把它们作为一个数组(假定数组名为a),选用InputBox函数来实现数据的输入;
② 为每个变量赋值都是重复的过程,因此可以通过循环依次为a(1)到a(10)完成赋值。
③ 输出时要求是逆序,此时应注意两点:一是要从a(10)到a(1)输出,二是这一输出过程也是重复的,也应配合循环来完成这一要求。
程序代码如下:
程序运行结果如图7-2。
图7-2
【实验7-2】利用随机函数产生15个1~100之间的随机整数,把其中的偶数存入到另一数组中。
方法分析:
① 数组个数及大小的确定:此题中要将一组同类数据中的偶数存到另一个数组中,因此要用到两个数组(一个存放产生的15个随机整数,数组大小可定义为15;另一个用来存放筛选后的偶数,因为有可能在某次随机产生的整数全部是偶数,所以此数组大小也应定义为15)。
② 产生随机数的方法:随机函数Rnd用来产生随机数,本题中要求产生15个随机整数,因此应用配合循环来完成,同时利用Int()函数将所产生的随机数取整。
③ 将符合条件的数组元素复制:每产生一个随机整数就赋给第一个数组中的一个元素,同时判断该值是否为偶数,如果条件成立,将该数组元素的值赋给另一数组元素,即为数组元素的复制。
④ 注意用来存放偶数数组元素的下标值的变化,本程序中使用两个变量i和j分别用来存放两个数组中数组元素的下标值。
程序代码如下:
程序运行结果如图7-3所示。
图7-3
【实验7-3】要求在实验7-2的基础上,把数组x中各元素的和以及平均值分别存到数组y中。
方法分析:
要把x数组中各元素的和以及平均值都存放到数组y中,这就要求数组y的大小在原来容纳y(1)到y(15)的基础上增加数组元素的个数,即y(1)到y(17),此时只要把实验7-2中数组y定义为动态数组即可解决。
程序代码如下:
【实验7-4】编写程序,求出给定10个整数中的最大值、最小值以及平均值并输出。
方法分析:
① 定义数组:10个整数属一类,应放入一个整型数组中。
② 找出数组中最大值:可以假定第一个数组元素的值为最大值,存入到一个简单变量max中,用max和其他的数组元素值分别进行比较,如果某数组元素值大于它,即把大的值赋给它,如果不大于,就继续和后面的数组元素比较,直到全部比较完后,数组中的最大值一定存放在该变量中。
③ 求最小值的方法同②。
④ 求平均值:用数组中各数组元素的累加和除以10。
方法1程序代码如下:
程序的运行结果为:
程序的运行结果为:
【实验7-5】某数组有20个元素,元素的值由键盘输入,要求将前10个元素与后10个元素对换。即第1个元素与第20个元素对换,第2个元素与第19个元素对换,……,第10个元素与第11个元素对换。输出数组原来各元素的值和对换后各元素的值。
方法分析:(www.xing528.com)
① 定义数组及为数组中的元素赋值:定义一个具有20个元素的整型数组,并通过InputBox函数为每个数组元素赋值。
② 实现数组中前10个元素与后10个元素对换的方法:如果按照题目的要求,只需进行10次数组元素值的交换(即a(1)到a(10)分别和后面的10个元素交换),关键是如何在这10次循环中表现出a(1)与a(20)、a(2)与a(19)……这一交换规律,本程序中我们通过循环中的表达式变换来实现,即i为取值范围从1到10的循环变量,利用表达式a(i)= a(20 - i + 1)即可通过i值的变化,准确地实现以上交换规律。
③ 交换两个变量值的方法:两个数组元素互换值时,我们可以借鉴前面学过的交换两个简单变量值的方法,即采用一个中间变量,此题中变量t即为中间变量。
④ 交换时要利用表达式准确地表现数组元素下标值的变化。
程序代码如下:
程序的运行结果如图7-4所示。
图7-4
【实验7-6】编写程序,输入10个字符放在数组中,将下标为4开始的数组元素中的字符顺序后移一个位置,并在下标为4的数组元素中放入字符@,输出所有字符。
方法分析:
① 定义数组:要向数组中存放的是字符,因此将数组定义为字符型,本实验中定为数组a。
② 数组元素的个数在程序中发生变化,可以用两种方法编程:一是利用静态数组(将数组的大小定义得足够大,既使插入新字符也能容纳得下),二是利用动态数组(程序中随着数组元素个数的增加重新定义数组大小)。
③ 在数组中指定位置插入新元素的方法:因为要在第4个位置插入新字符,而原来的a(4)中的值要放入到a(5)中,原来a(5)中的值要放到a(6)中,依次类推。设循环变量i=4,则可用a(i+1)=a(i)来实现把a(4)中的值放到a(5)中,但此时a(5)中的值被覆盖。所以要想做到从第4个元素开始依次后移而又不至于把后面的任何元素的值覆盖,应该先从最后一个元素a(10)开始向后移动,即a(11)=a(10),把a(10)中的值存入到a(11)中,因为a(11)中原本就是空的,不存在覆盖问题。然后再依次把a(9)移入到a(10)中,a(8)移入到a(9)中,等等。
④ 从第4个元素开始均向后移动一位完成后,即可将新字符放入第4个元素中。
利用静态数组程序代码如下:
利用动态数组程序代码如下:
程序的运行结果如图7-5所示。
图7-5
【实验7-7】从键盘为一个5行5列的二维数组中的各元素赋值,然后以每行5个元素输出。
方法分析:
① 二维数组的输入与输出:二维数组的输入、输出均要通过双重循环(外循环控制行的变化,内循环控制列的变化)来进行。
② 每行输出5个元素的方法:题目中要求每5个元素一行进行输出,此时必须要有一个变量用来记录每行已输出元素个数,当满5个时即换行。本实验中变量n来完成这一功能,称作计数器,即每输出一个元素值,该变量的值都要累加1,然后判断该变量是否能被5整除,如果条件成立,即表示该行已经输出5个元素。
程序代码如下:
程序的运行结果如图7-6所示。
图7-6
【实验7-8】求出一个5×5矩阵的左对角线和右对角线元素之和。
方法分析:
① 数组的定义:矩阵和二维数组的形式是完全一样的,因此我们可以定义一个具有五行五列的二维数组a(1 to 5,1 to 5)来表示题目中的矩阵。
② 数组元素的赋值:通过双循环(内外循环变量分别为i和j)完成对二维数组中各元素值的输入。
③ 确定左对角线上的元素:当数组元素的行下标值和列下标值相等的时候(即满足条件i=j),该元素即为左对角线中的元素。
④ 对左对象线上各元素求和。
⑤ 确定右对角线上的元素:数组元素的行下标值和列下标值分别为:(1,5)(2,4)(3,3)(4,2)(5,1)的才是右对角线中的元素,程序编写中找不到规律,我们只能利用行下标值和列下标值在表达式中的变化找出满足以上条件的元素进行累加。
⑥ 对右对角线上各元素求和,再与左对角线元素和相加。
程序代码如下:
程序的运行结果如图7-7所示。
图7-7
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。