大家好,欢迎来到IT知识分享网。
【C语言初阶】循环语句 —— while语句
文章目录
三、循环语句(循环结构)
学习,是一个需要不断进行重复的过程;反复阅读,反复练习,直至掌握。
循环结构是在一定条件下反复执行某段程序的流程结构。
1 循环语句
循环语句是由循环体及循环的终止条件两部分组成的。
被反复执行的程序被称为循环体,能否继续重复执行,取决于循环的终止条件。
1.1 语句分类
while
语句for
语句do while
语句
1.2 循环 – 流程图
2 while
语句
while
语句,可以实现循环。即当满足某些条件时,重复执行同一段代码。
2.1 while
– 流程图
2.2 语法结构
while(表达式) {
循环体 }
说明:
程序执行到 while
语句,首先进行的是表达式的判断;如果为真则进入循环体,否则就不进入循环体,而是执行 while
语句后的其他语句。
2.3 简单示例
在屏幕上打印1-10的数字。
代码示例:
#include<stdio.h> int main() {
//在屏幕上打印1-10的数字 int i = 1; while (i <= 10) {
printf("%d ", i); i++; } return 0; }
解释说明:
1 while (i <= 10)
:循环判断部分,先对表达式的结果进行判断。
如果为真,则执行循环体;如果为假,就执行 while
语句后续的语句。
2.4 while
中的 break
和 continue
语句
2.4.1 break
语句
break
在while
中的使用
代码示例:
#include<stdio.h> int main() {
//while中的break int i = 1; while (i <= 10) {
if (5 == i) break; printf("%d ", i);//1 2 3 4 i++; } return 0; }
解释说明:
1 程序顺序执行到 while
循环,当满足循环条件就进入循环体。
进入循环体,先执行 if
语句,对条件表达式进行判断。
当 i
的值由 i++
增加到5之后,就执行 break
语句。
2 当 braek
语句执行后,就跳出了 while
循环,程序流就会继续执行 while
之后的其他语句。
2.4.2 总结
- 在
while
循环中只要遇到break
语句,就会终止循环,跳出循环体。 while
中break
用于终止循环。
2.4.3 continue
语句
continue
在while
中的使用
① 代码示例1:
#include<stdio.h> int main() {
//1.while中的continue int i = 1; while (i <= 10) {
if (5 == i) continue; printf("%d ", i);//1 2 3 4 ...程序死循环 i++; } return 0; }
解释说明:
1 程序顺序执行到 while
循环,当满足循环条件就进入循环体。
进入循环体,先执行 if
语句,对条件表达式进行判断。
当 i
的值由 i++
增加到5之后,就执行 continue
语句。
2 当执行 continue
语句后,就不再执行本次循环体内 continue
后面的语句,而是跳转到了 while
循环判断部分。
此时循环的循环条件仍是判断 i<=10
也就是判断 5<=10
,跟上一次一样。
i
的值并没有增加( i++
未执行),进入循环体后,执行 if
语句的判断部分,随即再次执行 continue
语句;一直如此就陷入了死循环。
② 代码示例2:
#include<stdio.h> int main() {
//2.while中的continue int i = 1; while (i <= 10) {
i++; if (5 == i) continue; printf("%d ", i);//2 3 4 6 7 8 9 10 11 } return 0; }
解释说明:
1 控制程序终止的循环变量 i
的变化 i++
始终发生在 if
语句之前,所以程序不会陷入死循环,只是会跳过 i
为5的情况。
2.4.3 总结
continue
用于结束本次循环,也就是本次循环循环体中 continue
语句之后的其他语句不再执行,跳转到循环判断部分。接着进行下一次循环判断。
2.5 其它 while
示例
2.5.1 示例1
代码示例:
#include<stdio.h> int main() {
int ch = 0; while ((ch = getchar()) != EOF) {
putchar(ch);//打印字符 } return 0; }
解释说明:
1 EOF
:End Of File
文件结束标志。在VS2019中这样定义:#define EOF -1
2 getchar()
:C语言提供的一个库函数,用来从 stdin
标准输入流中获取字符。
如果读取成功,则返回该字符对应的ASCII码值;
如果读取失败,则返回 EOF
。
//对比:scanf函数,如果读取成功,返回的是读取到的数据的个数;如果读取失败,返回EOF
3 putchar(ch)
:将 ch
的值(字符)写入到 stdout
标准输出流中。
如果写入成功,则返回写入的字符;
如果写入失败,则返回 EOF
。
4 清理掉缓冲区剩余的数据
//使用while循环读取并丢弃输入行剩余的数据,包括换行符\n //写法一 while(getchar() != '\n') {
;//空语句 //在书写时省略掉while循环的花括号,可能会忽略掉这个分号(空语句) } //写法二 while(getchar() != '\n') {
continue;//如果使用continue,可读性会更高 }
5 Ctrl + Z
会让 scanf
或 getchar
返回 EOF
。
2.5.2 示例2
代码示例:
#include<stdio.h> int main() {
char ch = '\0'; while ((ch = getchar()) != EOF) {
if (ch < '0' || ch > '9') continue;//跳过非数字字符 putchar(ch); } return 0; }
解释说明:
1 if (ch < '0' || ch > '9') continue;
:用来跳过非数字字符。
2 整个程序的结果:只打印数字字符,跳过其他字符。
总结:
本节介绍了循环分支中的 while
语句,并给出了它的语法结构;同时又讲解了在 while
语句使用 break
和 continue
会起到的作用。
感谢您的阅读!如有任何错误,欢迎您的批评指正!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131064.html