1、while循环
C语言提供了3种循环语句,while就是其中一种,接下来就介绍一下while语句。
while语句的语法结构和if语句非常相似。
1.1、if 和 while的对比
1 if(表达式)
2 语句;
3
4
5 while(表达式)
6 语句; //如果循环体想包含更多的语句,可以加上大括号
你可以来对比看一下,具体写个代码吧
//代码1
#include <stdio.h>
int main()
{
if(1)
printf("hehe\n"); //if后面条件满足,打印一次hehe
return 0;
}
//代码2
#include <stdio.h>
int main()
{
while(1)
printf("hehe\n"); //while后面的条件满足,死循环的打印hehe
return 0;
}
这就是它们的区别,while语句是可以实现循环效果的。
1.2、while语句的执行流程
while语句的执行流程图
首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。
1.3、while循环的实践
练习:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ",i);
i = i+1;
}
return 0;
}
1.4、练习
输入一个正的整数,逆序打印这个整数的每一位
例如:
输入:1234,输入:4 3 2 1
输入:521,输入:1 2 5
题目解析:
- 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%得到4
- 要想去掉n的最低位,找出倒数第二位,则使用n=n/10操作就可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
- 循环1和2两个步骤,在n变成0之前,就能得到所有的位。
参考代码:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
while(n)
{
printf("%d", n%10);
n /= 10;
}
return 0;
}
2、do while循环
2.1、语法形式
在循环语句中do while语句的使用最少,它的语法如下:
1 do
2 语句;
3 while(表达式);
while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;
而do while循环则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进入下一次,表达式为假,则不再继续循环。
2.2、do while循环的执行流程
在do while循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的结果!= 0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。
所以在do while语句中循环体是至少执行一次的,这是do while循环比较特殊的地方。
2.3、do while循环的实例
在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d" ,i);
i = i + 1;
}while(i <= 10);
return 0;
}
2.4、练习
输入一个正整数,计算其位数
例如:
输入:1234 输出:4
输入:12 输出:2
参考代码:
#include <stdio.h>
int main()
{
int n = 0;
int cnt = 0; //计算位数
scanf("%d", &n);
do
{
cnt = cnt + 1;
n = n / 10;
} while (n);
printf("%d\n", cnt);
return 0;
}
这里并非必须使用do while语句,但是这个代码就比较适合使用do while循环,因为n即使是0,也是1位数,要统计位数的。