前言
本章主要是讲循环语句:
内容包含while循环、for循环、do while循环、goto语句的详解。
1、while循环
while循环语法
while(表达式) //表达式为真,执行循环语句
循环语句;
Q:使用while循环打印1~10
int main() { int i = 1;//初始化 while (i <= 10)//判断 { printf("%d ", i); i++;//调整 } return 0; }
这个例子很清晰明了的给我们展示了while循环的语法使用。
接着我们继续了解break和continue在while循环中的使用。
1.1 break在while循环中的使用
Q:看这段代码,它的执行结果是什么呢?
int main() { int i = 1; while (i <= 10) { if (5 == i) break; printf("%d ", i); i++; } return 0; }
运行结果:
我们看到的结果是打印了1~4就截止了。
我们可以得出break在while循环中的作用:
我们看到在判断到i = 5时,就不会再循环了。所以,break在循环中被执行时会直接跳出循环。
1.2 continue在while循环中的使用
Q:看这段代码,它的执行结果是什么呢?
int main() { int i = 1; while (i <= 10) { if (5 == i) continue; printf("%d ", i); i++; } return 0; }
运行结果:
我们看到的结果是1~4死循环。
Q:为什么是这样的结果呢
A:这里的 i = 5 之后触发continue,continue跳过了这次循环的后面部分,调整部分的 i++ 被跳了过去,继续循环 i = 5 ,就成了死循环。
所以我们可以得出continue在while循环中的作用:
continue在循环中被执行不会跳出循环,只会跳过continue后面的代码,进入到while的判断部分,进入下一次循环。
针对上面的代码,我们进行改进:
Q:改进后的这段代码,它的执行结果是什么呢?
int main() { int i = 1; while (i <= 10) { i++; if (5 == i) continue; printf("%d ", i); } return 0; }
运行结果:
我们将调整部分的 i++ 放在continue之前,i 初始化是1,经过判断为真,进入先进行 i++ 得到 2 就打印,循环进行,等 i++ 到 i = 5 时就只会跳过 i == 5 这次循环后面的部分,后面的每一次循环仍然正常运行,i++ 调整完后,i = 6 ,打印出来,i = 7, 8, 9,10,11依次调整打印。
1.3 getchar和putchar详解
getchar -- 读取一个字符
putchar -- 输出/打印一个字符
int main() { int ch = getchar(); putchar(ch); return 0; }
运行结果:
我们会发现在代码中getchar是需要用整型接收的。
Q:getchar读取的是字符,为什么是用整型接收呢?
A:getchar正常读取字符时返回的时字符的ASCII码值(范围:0~127),如果读取失败返回EOF --> -1(整形-1),所以使用整型 int 接收。
Q:看这段代码,他的执行结果是什么呢?
int main() { int ch = 0; while ((ch = getchar()) != EOF) { putchar(ch); } return 0; }
运行结果:
这里每输入一个就会打印一个,想要终止程序 Ctrl+Z 回车就可以结束。
工作原理:
getchar在读取字符的时候不是直接从键盘上读取,中间会经过一个输入缓冲区。如图所示(以上面这个代码为例):