理论教育 C语言一维数组程序设计示例

C语言一维数组程序设计示例

时间:2023-11-02 理论教育 版权反馈
【摘要】:例5.3将从键盘输入的100个整数存放在一维数组中,找出其中最小的整数,输出该数以及该数的位置。程序代码如下:例5.4随机产生100个整数存放在一维数组中,要求每个数大于300并且小于800。第1次,找到10个数中的最小数,查找的范围是下标为0~9范围内的所有数组元素。剩下的一个数放在下标为9的数组元素中,显然是最大的数。

C语言一维数组程序设计示例

例5.2 已知一维数组中存放了20个正整数,从键盘输入一个正整数,按顺序在数组中查找与该数相等的数,输出其所在的位置。

【分析】将被查找的数按顺序与数组元素对比,若相同则输出所在位置。

程序代码如下:

若输入“38”,则输出:

若输入“12”,则输出:

sign为标志变量。若sign为1,则表示找到了;若sign仍为0,则表示找不到。

例5.3 将从键盘输入的100个整数存放在一维数组中,找出其中最小的整数,输出该数以及该数的位置(用数组的下标表示)。

【分析】对于数组中的每个整数,按顺序比较,即可找出最小整数。

程序代码如下:

例5.4 随机产生100个整数存放在一维数组中,要求每个数大于300并且小于800。请输出这些数中满足条件(能被7整除,或者能被9整除)的数及其在数组中的下标。

【分析】可以使用函数srand()设置随机数种子,以便每次执行程序时产生不同的整数序列。使用函数rand()生成随机数,函数rand()的值是取值为0~32767的随机整数,可以使用语句“if(300<n&&n<800)”来选择产生大于300并且小于800的随机数,将函数rand()生成的随机数存放到数组中。按顺序判断这些数组中的数是否满足条件即可。

程序代码如下:

例5.5 从键盘输入10个整数,使用选择排序法,将它们从小到大排序。

【分析】将10个整数赋给数组的10个元素,然后使用二层循环,查找给定范围内的最小数。

第1次,找到10个数中的最小数,查找的范围是下标为0~9范围内的所有数组元素。记住存储这个最小数的数组元素的下标,将该下标对应的数组元素与下标为0的数组元素的值对换,使下标为0的数组元素中存储最小数。即下标为0的数组元素中存储的是下标为0~9范围内的所有数组元素中的最小数。

第2次,找到剩余9个数(除去下标为0的数组元素)中的最小数,查找的范围是下标为1~9范围内的所有数组元素。记住存储这个最小数的数组元素的下标,将该下标对应的数组元素与下标为1的数组元素的值对换,使下标为1的数组元素中存储这个范围内的最小数。即下标为1的数组元素中存储的是下标为1~9范围内的所有数组元素中的最小数。

第3次,找到剩余8个数(除去下标为0和1的数组元素)中的最小数,查找的范围是下标为2~9范围内的所有数组元素(除去下标为0和1的数组元素)。记住存储这个最小数的数组元素的下标,将该下标对应的数组元素与下标为2的数组元素的值对换,使下标为2的数组元素中存储这个范围内的最小数。即下标为2的数组元素中存储的是下标为2~9范围内的所有数组元素中的最小数。

照此类推,直到第9次找到剩余的2个数中的最小数,查找的范围是下标为8和9的两个数组元素,记住存储这个最小数的数组元素的下标,将该下标对应的数组元素与下标为8的数组元素的值对换,使下标为8的数组元素中存储这个范围内的最小数。即下标为8的数组元素中存储的是下标为8和9两个数组元素中的最小数。剩下的一个数放在下标为9的数组元素中,显然是最大的数。(www.daowen.com)

以上所述的排序方法被称为选择排序法。

程序代码如下:

若输入的10个数为4、9、1、3、0、5、7、2、8、6,则输出:

例5.6 折半查找法。数组x中按从小到大的顺序存放了25个整数,从键盘输入一个整数存放变量a中。请使用折半查找法,在x中查找与变量a值相同的数的位置。

【分析】折半查找法的思想是:每次使查找范围缩减一半,逐渐缩小范围,逼近要查找的数。设top和bott是查找范围的两个端点下标,mid=(top+bott)/2。若a等于x[mid],则找到了,输出查找结果,结束查找。若a在x[top]和x[mid]之间,则将mid-1赋给bott;若a在x[mid]和x[bott]之间,则将mid+1赋给top,得到新的端点下标。确定新的top和bott之后,查找范围缩减一半。重复上述过程,直到top>bott为止。

程序代码如下:

例5.7 数组str中按从小到大的顺序存放了10个字符,从键盘输入一个字符,将该字符插入数组str中,使插入后的11个字符仍按从小到大的顺序存放在数组str中。

【分析】按顺序将输入的字符与数组中的字符比较,确定插入位置。

程序代码如下:

运行程序,若输入“x”,则输出:

若输入“b”,则输出:

若输入“a”,则输出:

例5.8 统计选票。假设有1000张选票,有10个候选人,候选人编号从1到10。在投票时,投票人可在每张选票写1到10之间的数码,写1表示选第1号候选人,写2表示选第2号候选人,照此类推,写10表示选第10号候选人。

【分析】可以定义数组a[11],使用a[i]存放第i号候选人的得票数(i取值1到10间的整数)。可以使用循环统计选票,若选票上写的是i,则a[i]的值增加1。第i位候选人得票为a[i]张。最后使用循环语句输出a[1]到a[10]的值即可。

虽然数组元素的下标是从0开始,但是程序中没有使用下标为0的数组元素。变量可以做自加运算,数组元素a[i]也是变量,所以也可以执行a[i]++运算。

程序代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈