循环与分支第二部分

while循环相关代码练习

1.输入密码并确认

 为什么要添加一个while循环?

在这里引入一个概念,叫做输入函数

如scanf和getchar()

那么这些输入函数在接收数据的时候会先进入输入缓冲区

当缓冲区没东西的时候,函数才会开始等待,我们才可以输入字符。

但是,在进入缓冲区之后,函数只会拿走他想拿走的部分,而把剩余部分留在缓冲区里,

比如此代码中scanf里的'\n',当走到getchar()的时候,直接就把‘\n’读走了。

这个时候,我们就需要加入一个while循环,目的就是把‘\n’读走。清空缓冲区。

让ret能够顺利接收输入字符。

ps:不要忘记while里面的语句。

2.输出1到9的数字字符

for循环

绝大多数情况都会使用for循环。

                      初始化    判断     调整

语法格式for(           ;          ;          )

在屏幕上打印1-10的数字。

 除去5。

  continue会跳出本次循环,还存在调整机会。

  while可能会死循环,没有调整机会了。 

因为初始化只在第一次循环中的开始部分进行一次,所以不用担心初始化的值一直变化。

关于for循环的建议

1.不要在for循环体内改变循环变量,防止for循环失去控制。

2.建议采用前闭后开写法。

 3.for的初始化,调整,判断都可以省略。

但是:for循环的判断部分被省略,恒为正。

建议不要随便省略。

 本来应该出现一百次的输出,只出现了十次。

这是因为第一次内部循环过后,p变成了10。

在第二次内部循环开始的时候直接就是从10开始,条件不成立。

问:此代码循环多少次?

 答案:把0赋值给了k,直接为假,不进去,不参加循环。

do while语句

 如果在do内部假如语句:

if(i==5)

continue;

会跳过本次循环,进行while,最终导致死循环。

练习

1.输出一到十的阶乘

 注意:在外部循环上一定要加上一条语句:ret=1 在进入内部循环之前重置ret的值。

2.找到有序数组的某个数

使用二分查找法

 不要忘记while循环中的break。

3.多个字符从两边移动到中间汇聚

见注释。

4.输入三次密码,若错误则终止输入

 

 此代码较简单,但注意,不能用来比较两个字符串是否相等,应该使用一个库函数-strcmp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值