c判断数组是否为空_二维数组实践拓展——存包柜物品存取

在超市、健身房、游泳馆或休闲中心,相信大家都会看到存包柜的存在和知道它的使用意义。在存包柜当中,有条码电子和密码等种类,它可节省人力看管的费用,并提高服务品质,帮助客户自行保管随身物品,免承担看管责任,减少浪费人力资源。

907526421dae2d87c2d6b43a4acff286.png

存包柜自动存取物品是通过程序来实现的,现利用C语言程序设计模拟存包柜通过密码实现物品存取的实现。存取包提示: 存:

1. 按“存”字键;

2. 从密码出口取出开箱密码纸;

3. 自动开门;

4. 按屏示柜号存入物品;

5. 关好柜门。

取:1. 用开柜密码纸在密码输入处输入密码;2. 自动开门;3. 取出物品后请随手关门,密码作废。 解题思路:
  1. 存包柜一般由多行多列的若干小柜子组成,显然,需要定义两个二维数组:

    (1)定义二维数组,如locker[M][N],表示存包柜是否有物品,用0表示无物品,1表示有物品。

    (2)定义二维数组,如ps[M][N],表示存放物品时,系统随机生成的密码。

  2. 存包时,用穷举法判断每行每列的柜子是否为空,即判断locker[i][j]是否为0,若为0,则该柜可以存放物品,此时系统自动生成6位数密码,开门,存入物品,即locker[i][j]=1;关好柜门。在此还需要定义一个标志,若flag表示是否有空柜,flag=0,表示没有空柜,flag=1,表示有空柜。

  3. 取包时,需要先输入密码,密码正确,则取出物品,同时密码作废,即ps[m][n]=0;该柜locker[m][n]=0表示为空,可以继续存放物品。若密码输入不正确,可以再次输入密码,最多输入3次。

源程序:

44a71176c7cd815d1c26855fa4a7baf0.png

ea5a83404dc91dd29c2dc62a96cc5d2a.png

0c54104888123fe0d7394816e20a3e38.png

6a7c3cf123ae190d460c413f6198f752.png

取物品操作中,用到了三重循环,最外层的do-while循环控制最多只能输入3次密码;内层的双重for循环,利用顺序查找法查找输入密码与存物品时随机生成的柜子密码是否一致。程序中用到了continue及多个break语句,请读者结合注释,思考其作用。 运行结果:

8f6253dc30d49750923b24dca04b9b5b.png

3025eefe1859e522c71c2cbcca0c42e0.png

358a209d1e660e8865aeb8d7cb1ae859.png

程序中,涉及到新的函数及头文件:

time.h:声明日期和时间操作所用到的数据结构和函数

srand函数:随机数发生器的初始化函数。srand一般与rand()配合使用产生随机数序列。

rand函数:产生随机整数。在产生随机数前,需要srand函数提供生成伪随机数序列的种子,rand根据这个种子产生一系列随机整数。如果没有srand提供种子,每次调用rand函数生成的伪随机数序列都是一样的。

srand函数与rand函数包含在头文件stdlib.h之中。

23d7bbbd54d03b44e5033bfa581fb246.png

77d727199a1a428530b780ed4133d8a4.png

1083a7d1e8810d37f0a4033955abbe7d.png

7c85a760df2dd4819bf557df37800368.png

2d9fb65edf1239f93647179a501bbf9c.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值