10.21学习记录

目录

一.getchar()

二.高内聚低耦合,

三.reverse_string

1.方法1,循环指针法

2.方法2,循环数组法

3.递归法

四.逗号表达式的结果是最后一个

五.sizeof与strlen的区别

六.取模符号和除号

七. 移位操作符

  1 左移操作符

正整数

负整数

2.右移操作符

1.算术右移

2.逻辑右移

九.扫雷游戏的优化


一.getchar()

字符的输入输出务必注意有“\0”尤其在连续输出的时候,一定要用getchar()函数将缓冲区的\0去掉

二.高内聚低耦合,

函数的功能尽量模块独立.不要跟其他的交互

三.reverse_string

1.方法1,循环指针法

用指针接收,这里要跟整型数组区分,strlen只可以用于字符串的大小计算,并且要注意,到\0结束.

2.方法2,循环数组法

直接在数组进行操作,因为数组名就是地址.

3.递归法

第一个元素始终放在tmp里,递归回来的时候一步一步放在后面.

先把最后一个数放在第一个里

然后进入判断,只要地址往后一个元素,还剩两个元素,就进入递归

直到无法递归.

递归回来,比如abcdef

第一次 fbcde tmp=a fedcba

第二次f cde tmp=b; fedcb

第三次fe d tmp=c;这里结束递归,fedc

void reverse_string(char *arr)//递归方法
{
int len = My_strlen(arr);
char tmp = *arr;
*arr = *(arr + len - 1);
if (My_strlen(arr + 1) >= 2)//只要还有两个元素就交换
{
reverse_string(*(arr + 1));
    }

*(arr + len - 1) = tmp;
}

四.逗号表达式的结果是最后一个

sizeof也计算道\0.字符的字节是1字节

五.sizeof与strlen的区别

sizeof是计算数组大小.字符正好是1字节,并且包含\0

而strlen计算的是字符串长度,\0结束

字符串长度Y不知道,是随机数

*(arr)表示下标为0的地址指针

len如果是数组长度

*(arr+len-1)为下标是最后一个的地址指针

六.取模符号和除号

必须保证除号两边有一个是小数,才会出现浮点数

取模一定是小于她

必须a%b必须是整数

结果肯定是0到b-1

七. 移位操作符

<<左移操作符

>> 右移操作符

整型是四个字节也就是32bit

正整数原码,反码,补码相同.

  1 左移操作符

移位规则:

左边抛弃、右边补0

注:移位操作符的操作数只能是整数

操作的是补码.实际上显现的是源码

正整数

负整数

负整数需要先变成反码再变成补码再进行操作,因为我们看到的是原码,而计算机操作是补码

因为整数在内存中存储的是补码的二进制位

2.右移操作符

1.算术右移

右边丢弃,左边补原符号位

2.逻辑右移

右边丢弃.左边补0

取决编译器

八.位操作符

& //按位与//二进制位两个必须都为1才为1,否则为0

| //按位或//二进制位只要有1就为1只有同时为0才为0

^ //按位异或对应的二进制位:相同位0,相异为1

注:他们的操作数必须是整数。

九.扫雷游戏的优化

为了使有那种炸开的效果.也就是四周没有炸弹会空白.但是我觉得这是一个循环,假如四周没有炸弹,那还要继续对四周的炸弹进行判断.

但是四周的数量不好判断,就取了个界限4

但是后期测试的时候,会发现炸开会把之前的数据给覆盖掉.所以需要改进,判断是否为*/不是的话就不要填入空格

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值