1.计算n的阶乘

分支与循环语句练习_取地址

点睛:

  • n不宜过大,int装不下,会溢出。
  • scanf函数运用时,注意取地址,取地址,取地址!(重要的事情说三遍!)
  • scanf函数里面“  ”中间最好不要有空格。
  • ret=ret*i    这一步很巧妙。利用ret自乘,且循环即可完成阶乘。


2,计算1!+2!+3!+……+10!

分支与循环语句练习_二分法_02

打印结果是15,为何不是5?

原因:ret会有累计乘的效果,ret在计算完2的阶乘后还会存留,所以应对ret进行重置。

分支与循环语句练习_二分法_03

这时对ret进行了重置,ret=1,打印成功。

点睛:

  • 刚开始对ret进行定义时,让其等于1,而不是0,这样才可乘。

缺点:对资源过于浪费,每次进行一个数的阶乘时,都是从1开始。


进阶版:

分支与循环语句练习_重置_04

只有一次循环,非常简洁。


3·二分查找法

分支与循环语句练习_取地址_05


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·两端向中间汇聚

分支与循环语句练习_数组名_06

 

  • sizeof后面只需要添加数组名,arr1即可
  • Sleep的S需要大写,system不需要
  • =是把后面的值赋给前面的值,arr1&arr2 千万不能写反了!!!!


5·模拟用户登录场景

分支与循环语句练习_取地址_07

分支与循环语句练习_数组名_08

TIP:

  • ==不能比较两个字符串是否相等,应该使用一个库函数----------strcmp

分支与循环语句练习_取地址_09

  • 三次用变量i进行转换,-------要有设置变量的思想!
  • strcmp使用时,后接(),并用,隔开若等于0,则二者相等
  • 分支与循环语句练习_取地址_10

  • scanf函数“”里面,最好什么都不要!只加打印的数据类型!