“第七天” while ,break,continue

        循环语句:while ,do while()

while语句中:

break的作用:跳出循环,执行循环之后的语句;图一是正常的while循环,图二是在循环体中加入了一个 if  语句用来控制 i == 5时的执行break语句,而break的作用时跳出循环,所以只打印到 4 ,之后的都没有打印,这里出循环体时 i 的值是 5 .注意图一打印只到 9 ,这里和continue语句的图二输出结果做一下比对。

“第七天” while ,break,continue_第1张图片“第七天” while ,break,continue_第2张图片continue的作用:跳出本次循环,进入下次循环的判断。这里图一和图二的区别点是 i++所在的位置,第一个虽然只打印了 0~4 ,但是和上图的break效果是不一样的,break的程序是执行结束的,而这里continue的程序并没有结束,光标还在闪(由于是截图,所以不明显,可以自行尝试一下),continue所在的程序,当运行到 i ==5 的时候,满足了 if 的判断条件,执行continue语句,跳出本次运行,这里无法执行下面的 i++语句,所以 i 的值再下次循环时还是 5 ,然后又满足 if 的判断条件,再次执行continue语句,然后重复,陷入死循环。

“第七天” while ,break,continue_第3张图片

这里下图的 i++ 是在 if 的判断语句之前,所以在 i = 5 的时候,第一次执行continue语句,跳出本次循环体之后,在执行下次循环体时,会执行调整语句 i++ ,使得 i 的值变为 6 ,从而跳过continue语句,往下继续执行循环体,这里 i++所在的位置也改变了最终输入的结果,由0~9,变成了1~10(没有5 ,跳过了),具体为什么,可以自行分析.“第七天” while ,break,continue_第4张图片

getchar( ):获取一个字符; putchar ( ):打印一个字符。使用方式如下:

“第七天” while ,break,continue_第5张图片

同时getchar也可以用来清理缓冲区,如下,这道程序的本意是根据用户输入Y/N来确认用户是否确认密码, 可是在实际运行过程中,后面是直接输入 no 的,没有根据用户输入Y/N,用户甚至没有输入确认与否,这是因为scanf函数和getchar函数都是从输入缓冲区读取数据的,如果缓冲区本身有数据,函数则直接读取,如果没有,这等待用户输入。而用户在键盘键入数据后,需要按下enter来让数据上传到缓冲区,但这里上传的不止有键入的用户实际想要输入数据,还有enter(\n),所以在程序运行过程中,scanf函数读取走了用户键入的字符串,但缓冲区中还剩下一个 \n,所以在执行getchar函数时,getchar会直接将这个字符读取,然后程序继续向下运行,而非等待用户键入数据,如果想要达到原有的目的,这可以在这个getchar之前,在添加一个getchar函数,让新加的getchar函数将换行符读取走,这样缓冲区就为空了,当程序运行到 int ret = getchar()语句时,就需要等待用户键入数据,以达到确认的目的,如图二

“第七天” while ,break,continue_第6张图片

“第七天” while ,break,continue_第7张图片

但是这里还有个问题是 :字符串是可以存储空格的,但是输入时,scanf函数读取到空格就会停止,这样空格及之后的内容便留在了缓冲区,一个getchar函数可能无法完全清理缓冲区,这里可以这样处理:图一为没有处理的结果,图二为处理之后的结果

图一可以看出,虽然用来getchar来清理缓冲区,但是由于scanf读取后,缓冲区剩余太多,所以结果仍是直接输出no,这里可以加一个循环语句,用于将缓冲区清理干净,如图二

“第七天” while ,break,continue_第8张图片

“第七天” while ,break,continue_第9张图片

然后是一个程序,用来只打印数字字符,感觉还是有点意思的,在这里留一下,注意这个程序在输入后并没有运行结束,因为输入的都是字符,如果想要程序停止则输入非字符,如图二,输入的是ctrl+z;但是不可以直接输入 -1.因为键入 -1 相等于输入了两个字符 一个是 - ,一个是1.,所以键入 -1 不会停止.

“第七天” while ,break,continue_第10张图片

“第七天” while ,break,continue_第11张图片

“第七天” while ,break,continue_第12张图片

然后实际上后面还有几道试题,由于时间原因,明天补一下。

你可能感兴趣的:(算法)