while 语法结构
while(判断式)
{
循环结构体;
}
------------------------------------------------
while结构中的break 与continue:
break 为永久的终止循环;
continue为跳过本次循环continue后面的代码,直接去判断部分看是否进行下次循环。
例题分析:
105行,当i值等于5时,满足条件触发break,跳出循环,所以结果为打印1,2,3,4.
117行,当i等于5时,触发continue,跳过剩下的循环语句,回到判断条件,5<10,继续往下走,然后来到118行,又触发continue回到判断条件,因此结果为打印1,2,3,4以后进入死循环。(注意此时光标的位置,表明程序正在不断运行)
一个比较常见的while句子。
int ch=0;
while((ch=getchar())!=EOF){ putchar(ch);}
EOF: end of file。文件结束标志。
整个句子的作用为输入一个字符,然后输出一个字符。
注意:当你输入一个无法显示的字符时,系统也会接收并同样输出该字符。比如中间输入了空格键,系统也输出了空格键。特殊字符也可以接收与输出。想要退出该打印程序时按Ctrl+z;不然系统会一直要求你打印下去。
ctrl+z--------getchar读取结束
一个关于getchar()函数的实例:
如上图,程序的本义是想让用户输入密码以后,按Y/N来确认是否输入正确,结果用户在输入完密码再按回车以后,系统就判定用户输入的是非Y,直接跳过了用户输入字符的过程。
这是因为用户从键盘输入的数据会先储存在缓冲区,然后程序中的函数按顺序从缓冲区拿走自己能拿走的数据。
此实例中,用户输入了123456与回车键,scanf函数能接收特殊字符前的字符串,然后缓冲区仍然剩下‘\n’回车键,当getchar函数来读取缓冲区时,它并不会期待用户来输入判断字符,而是直接在缓冲区拿走了回车键作为它的数据。
如果想要正确实现程序需求,我们可以在里面加入一个getchar()函数来消耗掉缓冲区的回车键。