1.do-while循环
它的语法是:
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环;⽽ d o while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
在屏幕上打印1~10的值:
#define _CRT_SECURE_NO_WARNINGS 1
//打印1-10
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
在 do while 语句中循环体是⾄少执⾏⼀次。
输⼊⼀个正整数,计算这个整数是⼏位数?
例如: 输⼊:1234 输出:4 输⼊:12 输出:2。
#include <stdio.h>
//输出数字的个数
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;
n = n / 10;
} while (n);
printf("%d\n", cnt);
return 0;
}
2.break和continue语句
在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中提供了 break 和cvontinue 两个关键字,就是应该到循环中的。
break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏。
continue 的作⽤是跳过本次循环continue 后边的代码,在for和while循环中有差异。
while循环中的break和continue
#include <stdio.h>
//while中的break
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d", i);
i++;
}
return 0;
}
果把 break 换成 continue:
#include <stdio.h>
//while中的continue
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d", i);
i++;
}
return 0;
}
当 i 等于 5 后,就执⾏ continue ,直接跳过 continue 的代码,去循环的判断的地⽅。跳过了 i = i+1 ,所以 i ⼀直为 5 ,程序陷⼊和死循环。
continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。
for循环中的break和continue
#include <stdio.h>
//for中的break
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d", i);
}
return 0;
}
#include <stdio.h>
//for中的continue
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d", i);
}
return 0;
}
dowhile循环中的break和continue的作⽤和while 循环中⼏乎⼀模⼀样。
3.循环的嵌套
找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。
//嵌套
#include <stdio.h>
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
//判断1是素数则打印,不是跳过
//用2-i之间数字去除整除了i,则i不是素数
int j = 0;
int flag = 1;
//设=1是素数
for (j = 2; j <= i - 1; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d ", i);
}
}
return 0;
}
4.goto语句
C语⾔提供了⼀种⾮常特别的语法,就是goto 语句和跳转标号, goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
//goto语句
#include <stdio.h>
int main()
{
again:
printf("hehe\n");
goto again;
return 0;
}
goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以能不⽤尽量不去使⽤;但是也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出使⽤ goto 就⾮常的⽅便了。
⼀个 break 只能跳出⼀层for 循环,如果3层循环嵌套就得使⽤3个break 才能跳出循环,所以在这种情况下我们使⽤goto 语句就会更加的快捷。