在生活中我们有时需要反反复复的做一件事情,C语言用循环语句来解决
C语言的循环语句有 while ,for, do while
文章目录
一、while
1.while 语句的语法形式
while (表达式)
语句;
while 语句的执行流程:先判断表达式,如果为真,执行语句,然后后在判断表达式。重复进行,如果表达式为假,则退出循环,不再执行
用 while 循环输出1 ~ 10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
2、while 语句中的 break 和 continue
(1)break
while 语句中如果执行 break 则会直接跳出循环
程序输出什么呢?
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i % 5 == 0)
break;
printf("%d ", i);
i++;
}
return 0;
}
程序输出 1 2 3 4
(2)continue
while 语句中执行 continue 时会跳过 continue 后面循环体的语句,来到判断表达式
程序输出什么呢?
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i % 5 == 0)
continue;
printf("%d ", i);
i++;
}
return 0;
}
程序输出1 2 3 4 后死循环
二、for
1、for 语句的语法形式
for (表达式1; 表达式2; 表达式3)
语句;
for 语句的执行流程:先执行表达式1,然后判断表达式2,如果为真,执行语句,然后执行表达式3,接着判断表达式2,重复进行,如果表达式2为假,则退出循环,不再执行
通常,表达式1为循环变量赋一个初识值,表达式2作为是否执行循环的条件,表达式3改变循环变量的值,避免循环一直执行下去
用 for 循环输出1 ~ 10
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
2、for 语句中的 break 和 continue
(1)break
for 语句中如果执行 break 则会直接跳出循环
程序输出什么呢 ?
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
if (i % 5 == 0)
break;
printf("%d ", i);
}
return 0;
}
程序输出 1 2 3 4
(2) continue
for 语句执行 continue 会跳过 continue 后面循环体内的语句,来到表达式3,然后判断表达式2,继续循环
程序输出什么呢?
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
if (i % 5 == 0)
continue;
printf("%d ", i);
}
return 0;
}
程序输出1 2 3 4 6 7 8 9
3、for 循环的 3 个表达式都可以省略
for(;;)
分号不能省略
省略表达式2时:此时循环永真
三、do while
1、do while 语句的语法形式
do
语句;
while (表达式);
无论条件如何都会执行一次语句
先执行语句,然后判断表达式,如果表达式为真,执行语句,重复进行,如果表达式为假,则退出循环
用 do while 循环输出 1 ~ 10
#include <stio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}
while (i <= 10);
return 0;
}
2、do while 语句中的 break 和 continue
(1)break
do while 中如果执行 break 则会直接跳出循环
程序输出什么呢?
#includ <stdio.h>
int main()
{
int i = 1;
do
{
if (i % 5 == 0)
break;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
程序输出 1 2 3 4
(2)continue
do while 语句执行continue 会跳过 continue 后面循环体内的语句,来到判断表达式
程序输出什么呢?
#includ <stdio.h>
int main()
{
int i = 1;
do
{
if (i % 5 == 0)
continue;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
输出1 2 3 4 后死循环
四、一些习题
1、计算 n 的阶乘
#inlcude <stdio.h>
int main()
{
int i = 0;
int ret = 1;
int n = 0;
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
ret *= i;
}
printf("%d\n", ret);
return 0;
}
2、计算1!+ 2!+ … + 10!
#include <stdio.h>
int main()
{
int i = 0;
int ret = 1;
int sum = 0;
for (i = 1; i <= 10; i++)
{
ret *= i;
sum += ret;
}
printf("%d\n", sum);
return 0;
}
goto 语句也可以实现循环,但是可以用上述的循环语句替代
for 循环其实是 while 循环的一种常用方式的简写,在需要赋初值和调整循环变量的语句时,他比 while 循环的效果更好,for 循环将循环变量的初值,循环条件,以及循环变量的调整放在一起,当循环语句较多时,比使用while语句更方便的管理
总结: 三种循环都可以使用 break 和continue 语句,他们的作用有一点点的差别,根据应用场景选择合适的循环语句