文章目录
循环结构
循环结构是程序设计流程结构中常用的结构, 在后面学习数组遍历, 多数算法实现的操作中会经常见到这样的结构设计.
C 语言中, 循环结构涉及到的关键字有如下 5 个.
for
while
do
continue
break
有人可能会在旧版教材中看到有一个特殊的语句, 这里不介绍, 知道的同学也请不要跟外人提这件事. 尽管早期时候你可能会发现这样写代码十分方便. 但是后面会导致程序设计逻辑混乱. 这个语句只有在极其有限的条件下才能使用.
本篇文章介绍第一个关键字 for
, 和 for
结构循环.
for
结构一般如下所示:
for(1 循环初始状态; 2 循环条件表达式; 3 每次循环末尾操作){
4 循环执行的代码;
...;
}
示例, 计算 1~100 的总和的朴素方法.
...
int i, sum;
sum = 0;
for(i = 1; i<=100; i++){
sum = sum + i;
}
...
for
循环执行的过程是按照 1, 2, 4, 3, 2, 4, 3, 2, 4, 3, … 的顺序, 直到判断发现 2 不满足条件为止.
注意 C 语言中的 for
循环, 括号不能省略,括号里面的内容必需用两个分号;
隔开. 如果1, 2, 3 中的某或某些部分不需要, 可以空着, 但是分号不能缺少.
比如下面的无限循环的一个例子
...;
for(;;){
do sth;
}
...;
这里看到, 循环条件(2)这里的部分是空的, 所以循环不会停止.
再比如:
...;
int i;
for(i = 0; i<100;){
do sth;
}
这里虽然条件不是空的, 但是循环条件永远无法打破, 因为(3)处缺失. 同时代码中也没有对 i
的操作.
再比如:
...;
int i;
for(i = 0; i<100;){
do sth;
i = i+1;
}
虽然(3) 处缺失, 但是循环部分的代码对 i 进行了自增1的操作. 所以不是无限循环.
也就是说, 我大可以写这样的代码:
int i = 0;
for(;i<100;){
do sth;
i += 1;
}
for
循环的好处就在于, 它能把这个用来记录循环次数的变量放在开头. 阅读代码, 写代码时候你明显清楚这个循环次数变量, 以及每次循环这个变量自增的情况. 所以面对这种有初态, 有终态的循环代码都优先选择 for
来实现.
下面正式写一下朴素的计算1~100和结果的代码, 各位可以抄一下:
1 # include <stdio.h>
2
3 int main (void){
4
5 int sum, i;
6
7 sum = 0;
8 for(i = 0; i<100; i++){
9 sum = sum + i + 1;
10 }
11
12 printf("sum from 1 to 100 is %d\n", sum);
13 return 0;
14 }
运行结果如下:
在讲到数组之前, 循环的能力最大也就是这样了, 数组才是循环真正能够大显身手的地方. 所以各位不用着急.
下篇文章将讲下两个关键字 while
和 do
涉及到两个循环结构:
while
和 do - while
结构. 感谢各位的支持.