1.计算n的阶乘
点睛:
- n不宜过大,int装不下,会溢出。
- scanf函数运用时,注意取地址,取地址,取地址!(重要的事情说三遍!)
- scanf函数里面“ ”中间最好不要有空格。
- ret=ret*i 这一步很巧妙。利用ret自乘,且循环即可完成阶乘。
2,计算1!+2!+3!+……+10!
打印结果是15,为何不是5?
原因:ret会有累计乘的效果,ret在计算完2的阶乘后还会存留,所以应对ret进行重置。
这时对ret进行了重置,ret=1,打印成功。
点睛:
- 刚开始对ret进行定义时,让其等于1,而不是0,这样才可乘。
缺点:对资源过于浪费,每次进行一个数的阶乘时,都是从1开始。
进阶版:
只有一次循环,非常简洁。
3·二分查找法
TIP:
- 可以直接对k进行定义
- 计算元素个数时,需要添加sizeof
- 对 left& right进行定义时,注意左下标就是0;而右下标利用sizeof巧妙转换
- 对mid进行定义时,需要在循环中定义,因为mid会随之变换
- 是else if ,而不是if else! if放最后!
- 理解+1-1,目的是缩小范围,所以右边-1,左边+1
- 已经找到,需要添加break结束循环。
- break和continue后面都要加;分号
- else后面判断条件不需要加!
Q:为何mid在判断时添加arr,在打印时不添加?
A:因为整个算法体系根据下标进行标识
4·两端向中间汇聚
- sizeof后面只需要添加数组名,arr1即可
- Sleep的S需要大写,system不需要
- =是把后面的值赋给前面的值,arr1&arr2 千万不能写反了!!!!
5·模拟用户登录场景
TIP:
- ==不能比较两个字符串是否相等,应该使用一个库函数----------strcmp
- 三次用变量i进行转换,-------要有设置变量的思想!
- strcmp使用时,后接(),并用,隔开若等于0,则二者相等
- scanf函数“”里面,最好什么都不要!只加打印的数据类型!