while循环
语法格式
while(表达式) //如果有多条语句则需要加上大括号{ }
语句; //循环体
if语句与while的对比
while循环语法结构与前面我们讲的 if 语句的表达式十分相似。
语法格式:
if(表达式)
语句;
while(表达式) //如果有多条语句则需要加上大括号{ }
语句; //循环体
提示: if语句与while循环都是先判断表达式的值,根据该值的结果(真或假)看是否要执行下方语句;不同的是,if的表达式只使用一次。while的表达式要使用很多次,当表达式为真(非0),执行循环体,然后再次判断表达式的值,如果仍为真,继续执行循环体,否则循环结束跳出while循环。
举个栗子:
if语句
#include<stdio.h>
int main()
{
int n = 10;
if (n > 0)
printf("hehe\n");
return 0;
}
解析:if语句中的表达式只执行一次。因为10>0所以执行下面的语句,打印一次hehe结束
while循环
#include<stdio.h>
int main()
{
int n = 10;
while (n > 0)
printf("hehe\n");
return 0;
}
解析:while循环的表达式会使用多次。第一次:n=10,10>0屏幕打印一次hehe,第二次:n=10,10>0屏幕打印再次hehe…我们会发现10永远都大于0,所以我们可以看到屏幕会一直输出打印 hehe。
这也提醒了我们要设置合理的表达式,不然就会出现死循环。
小试牛刀
在屏幕上打印1-10的值
分析:我们要出现1-10的值,那么我们需要一个变量 i 并赋予它初值为1;我们要打印多个数字,所以我们用一个 while 循环,因为只需要打印10个数字,所以表达式为 i<=10;最后利用自增运算打印1,2,3,4…由此我们可以得到以下代码
#include<stdio.h>
int main()
{
int i = 1;
while (i<=10) { //i=1,1<10打印i并执行i++;i=2,2<10打印i并执行i++...以此类推。当i=11,11>10表达式为假所以结束循环
printf("%d", i);
i++; //i=i+1
}
return 0;
}
for循环
语法格式
for(表达式1;表达式2;表达式3) //表达式由分号隔开
语句; //如果有多条语句则需要加上{ }
提示: 表达式1是初始化表达式,它只执行一次;表达式2是判断表达式;表达式3是调整(多数情况为自增、自减运算)。
举个栗子:
在屏幕上打印1-10
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i < =10; i++)
printf("%d ", i);
return 0;
}
解析:i=1,1<10打印 i,然后执行 i++此时 i=2;2<10打印 i,然后执行 i++此时i=3…依次类推,当 i=11时,11>10跳出循环执行return 0;
while循环和for循环对比
在屏幕上打印1-10
通过上面我们可以看到,while循环和for循环都有初始化、判断、调整。不同的是for循环的这三个部分非常集中,有助于我们对代码的维护,while循环比较分散。
do while循环
语法格式
do
语句; //循环体
while(表达式); //注意表达式后面有分号
先执行语句,再看表达式;如果表达式为真,再次执行语句,如果表达式为假,结束do while循环。 注意do while的循环体至少执行一次
举个栗子
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}while (i <= 10);
return 0;
}
解析:i=1进入do-while循环,先打印 i 的值1,然后执行 i++ 此时 i=2 , 2<=10继续循环,打印 i 的值2,然后执行 i++此时 i=3, 3<=10继续循环以此类推,当 i++的值为11时跳出循环。此时屏幕会打印出1-10。