while(条件控制语句)
{
循环体;
}
当条件控制语句为真时,执行循环体中的内容。
当条件控制语句为假时,跳过while循环。
先看一个例子
int main()
{
int n = 3;
while (n > 2)
printf("hehe\n");
//if (n > 2)
// printf("hehe\n");
// 此处的while和if的功能是一样的,这是一个死循环
return 0;
}
此例子中while的用法和if语句功能是一样的,注意仅仅是功能一样,
if语句在条件成立,执行printf函数后,会自动跳转到下一行执行。
但是while语句不会跳转,只要括号内的n>2这个条件成立,就会一直打印“hehe”,直到退出程序。所以需要()内的条件控制语句来实现while语句的结束,如条件表达式中始终为真的话,就一直执行循环体中的内容。
看下一例
// 在屏幕上打印1~10的值
int main()
{
int n = 1;
while (n < 11)
{
printf("%d\n",n);
n++;
}
return 0;
}
程序中,在while语句只使用括号中的(n<11)控制本循环语句的结束
花括号{}循环体中,设计了n++,即每循环一次n的值加1
程序运行结果为:1 2 3 4 5 6 7 8 9 10
因为当n==11时,将首先判断 n<11 条件为假,结束循环。
实操:输入一个正的整数 逆序打印这个数的每一位
int main()
{
int num = 0;
scanf("%d",&num);
while (num ) // 即num > 0 这个表达式可以是任何能够计算出一个整数值 注意必须是整形
{
int mod = num % 10;
printf("%d ",mod);
num = num / 10;
}
return 0;
}
程序中:while循环的控制条件为num的值,假设num输入值为123
在循环体中:
第一次循环
123 对 10 余数 得到个位3,并打印输出;
然后num 除以10,因为num是一个整数,整数的除法不保留小数,所以123/10=12;
12 > 0,为真,进入下次循环。
第二次循环
12 对 10 余数 得到个位2,并打印输出;
然后num 除以10,因为num是一个整数,整数的除法不保留小数,所以12/10=1
1 > 0,为真,进入下次循环。
第三次循环
1 对 10 余数 得到个位1,并打印输出;
然后num 除以10,因为num是一个整数,整数的除法不保留小数,所以1/10=0
0> 0,为假,退出循环。
最终输出3 2 1