标准C语言学习总结4

走迷宫:

    数据分析:

        1.定义二维字符数组作为迷宫地图

        2.定义变量记录角色的位置 x y

        3.时间:time(NULL)   获取1970-1-1到运行时过了总秒数

    逻辑分析:

        进入死循环:

        1.显示地图

        2.获取方向键并处理

            判断前方是不是路' '

                如果是:

                    1.把旧位置变成' '

                    2.把新位置变成'@'

                    3.更新角色位置坐标x y

        3.判断是否到达出口

            如果是:程序结束

推箱子:数据分析:

            1.确定数值与字符的对应关系

                0   ' '

                1   '@'

                2   '$'

                3   '#'

                4   'o'

                5   '@'

                7   '$'

            2.定义8*8整数地图并初始化

            3.定义记录角色位置的变量x y

            4.定义记录步数的变量

        逻辑分析:进入死循环

            1.清理屏幕,显示地图

                if(0 == map[i][j])  printf(" ");

            2.获取方向键并处理

            3.判断是否游戏胜利

                前方是路,参考走迷宫

                    前方+1

                    原位置-1

                    更新坐标

                2.前方是箱子

                    箱子的前方是路\目标点

                        人前方的前方    +3

                        人前方          -3+1

                        人原位置        -1

                        '更新左边

十进制转二进制:(转其他进制)

        求余法:用2对数据求余,然后继续对商求余,直到商为0结束,该过程中产生的余数就是该数据的二进制(逆序)

求权法:

            从高位到地位,数据  2^(n-1) 如果够减,那么第n位就是1,否则就是0,直到把数据减为0

二进制转十进制: (其他进制转十进制m^(n-1))

        每位的2^(n-1) 求和

C语言中,以0开头的数是八进制数,以0x开头的数是十六进制

原码:数据的二进制

    反码:

        正数的反码就是他的原码

        负数的反码就是它原码的除符号位外,其它位按位求反

    补码:

        正数的补码就是它的原码

        负数的补码是它的反码+1

补码转数据:

        无符号的补码直接转换成十进制

        有符号最高位是0,说明是正数,也直接转换成十进制

        有符号且最高位是1;

位运算符     &   |   ~   ^   <<  >>

    A   &   B   按位相与  不同为0

    A   |   B   按位或    不同为1

   ~A          按位求反

    A   ^   B   按位异或    相同为0,相异为1

   A   <<  n   把A的补码向左移n位,左边丢弃,右边补0

   A   >>  n   把A的补码向右移n位,右边丢弃,左边补符号位,最高位为1时补1,为0补0

自定义函数

            为了更好地管理自己的代码,减少代码的冗余把代码封装成函数形式

            函数声明:

                隐式声明:在调用函数时,前面没有出现过该函数的声明或者定义

                        就会产生隐式声明的警告,参数会根据实参来猜测,

                        返回值会猜测为int类型反正不要产生隐式声明

                        只要在调用前有声明或定义即可

                函数声明的目的是为了告诉其他代码该函数的调用格式

                返回值类型  函数名(类型1 形参名1,类型2 形参名2,...);

注意:

            1,在函数调用之前有函数定义,则函数声明可以省略

            2,函数的返回值会返回在调用位置,可以立即显示,

            也可以用变量记录下来

            3,一个函数建议不要超过50行代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值