学习心得(六)

 

 

1.gets()
    不以空格作为字符串输入结束的标志,而以回车作为输入标志。

2.自动变量(auto)
    函数内凡未加存储类型的变量均视为自动变量。
    由于自动变量的作用域和生存期都局限于定义它的个体内(函数或复合语句内),因此不同的个体中允许使用同名的变量而不会混淆。

3.迷宫的算法
    迷宫的信息用二维数组存储,例如入口(行、列号)、出口(行、列号)、可以走(元素值为1)、不可以走(元素值为0);实现过程中要用到栈。
    思路:通过分析一个元素上、下、左、右元素可否走来对数组的值进行修改,最后用值2标志出从入口到出口的路径。
    算法:定义结点数据类型,包括一个值,两个指针(一个指向前一结点、一个指向后一结点)。
    1.当前结点指向迷宫入口并推入栈,值为2;
    2.如果当前结点不是出口,依次判断当前结点的上、右、下、左格是否存在&&可走,如果可走就把当前结点的后指针指向新结点,新结点的前结点指向当前结点,移动当前结点到新结点,执行1。如果4个方向均不可走,把当前结点置为3并退栈,退到当前结点的前一结点上,循环2;
    3.如果当前结点是出口,则结束;否则继续循环2。

4.扫雷的算法
    雷的信息由二维数组存储,有雷的格子值为10,其余为0。
    思路:若要实现x*y的扫雷,则使用(x+2)*(y+2)的二维数组。捕捉用户点击,判断9格状态。
    算法:根据雷的位置,计算不是雷的格子,把0改变为0-8。数据结构,数组中存放2信息,一是值,二是标志(是否打开)。
    1.初始化。二维数组内容全部置0,雷置10,标志全为未打开;纪录雷的个数bomb,已打开格数open=0;在x*y范围内,从00格开始到xy格结束,如果本格不是10,则累计周围8格中为10的元素个数,并赋值,如果是10,什么都不做;
    2.在x*y范围内,捕捉用户点击,若(打开格数+雷数)<(x*y),则;
    3.得到点击的格,判断此格以及周围8格是否为10,若是,则游戏结束,玩家失败,否则,打开9格;纪录打开格数+9;
    4.等待下次用户点击;
    5.若(打开格数+雷数)=(x*y),玩家赢。
    ps:使用(x+2)*(y+2)的二维数组的原因是,在填充数据的时候,避免越界导致我们修改了不该修改的数据。

5.洗扑克的算法
    前提条件:一副52张的牌,没有大小毛,不考虑花色,存在数组里,如何把牌洗得很乱?不够乱赌场会赔钱。
    swap(cards[i], cards[random() % (54 - i) + i])。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值