前言:
C语言提供了3种循环结构,分别为while循环,for循环,do-while循环。
- for循环适合针对一个范围判断进行操作,即已知循环次数。
- while循环适合判断次数不明确 的操作,切循环结束后依旧可以使用。
- for、while循环都必须先判断条件是否成立,然后决定是否执行循环体。
- do...while循环比较特殊,它先执行循环体,然后根据判断条件决定是否再次执行循环,即 do...while至少执行一次循环。
1.while循环
1.1 while循环语法与if语句语法相似:
1. while(表达式)
2. 语句;
1.2 while语句的执行流程:
1.3 练习:
输入一个正的整数,逆序打印这个整数的每一位
例如:
输入:1234,输出:4 3 2 1
输入:521,输出:1 2 5
1. #include<stdio.h>
2.
3. int main()
4. {
5. int n = 0;
6. scanf("%d ",&n);
7. while(n)
8. {
9. printf("%d ",n%10);
10. n /= 10;
11. }
12. return 0;
13. }
2. for循环 (使用最多)
2.1 语法形式:
1. for(表达式1;表达式2;表达式3)
2. 语句;
//表达式1 用于循环变量的初始化
//表达式2 用于循环结束条件的判断
//表达式3 用于循环变量的调整
注:切记在for循环表达式括号后不要加分号,否则会将循环变成空语句;如:
不加分号:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
printf("%d ", i);
return 0;
}
加分号:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++);
printf("%d ", i);
return 0;
}
由此可见:
“;”表示本行语句结束,在for后面加上“;”说明for已经结束,表示不进行任何代码的执行,就相当一个空语句。注意以下语句的分号“;”。
1. for (i=1;i<10;i++) 表示可以执行到i=9,注意此时i=10,但不执行。
2. for (i=1;i<10;i++) ; 表示不执行该语句,只计算i的值,注意此时i=10,如i=9时,9<10,则i+1。
3.for (i=1;i++<10;) 当i=9,时,因9<10,执行for循环,此时i+1=10,即,此时i的值是10。
4.for (i=1;i++<10;);表示不执行该语句,只计算i的值,由于i++是先返回i的值,然后再‘执行’i = i + 1;
在i = 9时9 < 10成立,然后i = i +1; i为10,并进入‘循环’,10 < 10不成立,i = i + 1; 并退出‘循环’,此时i为11 。
摘抄自:穿着大号裤衩
2.2 for循环的流程图
2.3 练习:
使用for循环打印九九乘法表
1. int main()
2. {
3. int i = 0;//i为行数
4. for(i = 1; i < 10; i++)
5. {
6. int j = 0;//j为列数
7. for (j = 1; j <= i; j++)
8. {
8. printf("%d*%d=%d\t", j, i, i * j);
10. }
11. printf("\n");
12. }
13.
14. return 0;
15. }
3. do-while循环(使用最少)
3.1 语法形式
1. do
2. 语句;
3.while(表达式);
注:do-while循环先进入循环体,执行循环语句,之后再判断表达式是否为真。
3.2 执行流程
由图可知:do while循环循环体至少执行一次
3.3 练习
输入一个正整数,计算这个整数是几位数?
例如:
输入:1234 输出:4
输入: 12 输出:2
1.#include<stdio.h>
2.int main()
3.{
4. int n = 0;
5. scanf("%d", &n);
6. int cnt = 0;
7. do
8. {
10. cnt++;
11. n = n / 10;
12. } while (n);
13. printf("%d\n", cnt);
14.
15. return 0;
16 }
n即使为0,也为一位数,故用do while循环更为合适.