一、for循环语句
在本节中我们来一起学习另一种循环方式,它叫for语句。for语句的语法如下:
for (初始语句; 条件表达式; 每次循环后执行语句)
{
printf("%d\n", day);
}
在for语句中后的小括号中一共有三部分内容,每个部分用分号;隔开。
第一部分为初始化语句,当程序执行for语句时首先执行此语句,并且只执行一次,与条件表达式是否成立无关。
第二部分为条件表达式,当条件表达式成立时,即其结果为真时,程序循环执行大括号中的循环体。
第三部分为每次循环后执行语句,此部分语句在每次循环时都会执行。
for语句其实跟while循环相比并没有本质的区别,只不过在形式上更简洁一些,例如在上节中我们编写的关于while循环显示1到31这样的程序:
int day = 1;
while (day <= 31)
{
printf("%d\n", day);
day++;
}
而下面我们将实现一个使用for语句的循环程序,功能与上面程序一样:
int day;
for (day = 1; day <= 31; day++)
{
printf("%d\n", day);
}
在for循环语句中首先将day的值置成1,然后根据条件表达式结果进行判断,当条件表达式的值为真时,执行循环体中的内容,即调用printf函数显示day的值。每当执行一交循环后,都要执行小括号中最后一部分内容day++。
于是上面程序在执行了31次之后day的值变为32,条件表达式day <= 31结果为假,结束循环。
二、循环嵌套
对于已经学过的三种循环语句来说,都可以进行循环嵌套,也就是说一个while语句的循环体中嵌入一个子while循环语句,do while循环体中嵌入do while子循环,同样for循环中也可以嵌入for子循环。其实,循环嵌套可以任意使用,例如在while中嵌入do while,并在这个do while中再嵌入一个for循环,都是可以的。为了让读者更好的理解我们先来编写一个for循环配合使用if语句显示一月的日期,每显示7天就进行一次换行:
int day;
for (day = 1; day < 31; day++)
{
printf("%3d", day);
if (day % 7 == 0)
{
printf("\n");
}
}
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
当然,这个显示日期的程序并没有考虑太多细节问题,例如没有考虑闰年、月份和星期之间的关系,不过已经可以很好的说明在for循环中嵌套if语句的方法了。我们再来用for语句的双循环来实现一个显示9x9乘法表的程序:
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%dx%d=%-3d", i, j, i * j);
}
printf("\n");
}
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
Copyright © 2015-2023 问渠网 辽ICP备15013245号