do
{
循环体
}
while(条件判断表达式)
while 和for 都是先判断条件,条件满足就进入循环,执行循环语句,如果不满足就跳出循环。
do while循环则是先进入循环,执行循环语句。然后再执行while判断表达式,表达式为真,就进入下一次循环,表达式为假,则退出循环,换句话来说,do-while循环至少会进入循环体中执行一次。
举个例子1:
// 在屏幕上打印1~10
int main()
{
int i = 1;
do //无论哪种循环体后超过一条语句,都必须加{}
{
printf("%d ",i);
i++;
} while (i <= 10);
return 0;
}
在程序中:
i被赋值为1;
进入do-while循环,并遵循do-while循环至少执行一次循环体的规则
打印1;而后i++,i==2,因为条件判断表达式为 i<=10,满足条件,继续循环
再次进入循环体,输出2,i++,i==3....
当循环继续 i++,使得i==10时,因为条件判断表达式为 i<=10,满足条件,继续循环
打印10,接着i++,i==11,此时条件判断表达式 i<=10,不满足,退出循环
程序执行结果:1 2 3 4 5 6 7 8 9 10
例子2: 输入一个正整数,计算这个整数是几位数
// 输入一个正整数,计算这个整数是几位数
int main()
{
int i = 0;
int num = 0;
scanf("%d",&num);
do
{
i++;
num = num / 10;
} while (num);
printf("i = %d", i);
return 0;
}
程序分析:
进入程序后,并遵循do-while循环至少执行一次循环体的规则,i++,i==1;
1、假设输入num 为1,是个一位数,1 / 10 == 0,进入条件判断表达式(0)即(假),退出循环,打印i=1,即输入数为一位数
2、假设输入num 为11,是个两位数,i++,i==1,11/ 10 == 1,进入条件判断表达式(1)即(真),再次循环i++,i==2,1/10==0,进入条件判断表达式(0)即(假),退出循环,打印i=1,即输入数为两位数
3、以此类推