Hello小伙伴们下节分支与循环来啦!
do while语句
在循环中do while循环运用的相对比较少。
do
语句;
while(表达式);
上期讲到while和for循环这两种循环都是先判断,如果条件满足才进入循环,执行下列的语句,如果不满足表达式就直接跳出循环。
而do while则是先进入循环体,执行一次,在进行表达式的判断,若判断为真则继续循环,若表达式为假,则循环结束,跳出循环。do while循环与其它循环不一样的地方就是,不管它的表达式判断结果是为真还是为假,它都会先执行一次语句,在进行判断,这就是不同的地方。
用代码更直观的表达清楚吧!
#include <stdio.h>
int main()
{
//设置一个整型变量,给它赋值一个0,为假的值
int flag = 0;
do
{
printf("hehe\n");
}while(flag);
//输出结果就是,屏幕打印一次hehe后循环直接结束
//反之while的表达式为真的话,死循环打印hehe
return 0;
}
小试牛刀:输入一个正整数,算算他有几位用while循环来实现~
//输入一个正整数,算算他有几位用while循环来实现
#include <stdio.h>
int main()
{
int conunt = 0;
int i =0;
scanf("%d", &i);
do
{
count++;
n = n / 10;
}while(n)
printf("%d", count);
return 0;
}
break和continue语句
在循环执行的过程中,若果发生某些状况,需要提前终止循环,这是非常常见的现象。
break:的作用是永久终止循环,直接跳出循环,执行下面的语句。
continue:continue是跳过本次循环continue后面的代码,在for循环和while循环中有所差异。
while循环中的break:
#include <stdio.h>
//打印0到9的数字,当i等于5时循环结束
int main()
{
int i = 0;
while(i<10)
{
if(i==5)
break;
printf("%d ", i);
i++;
}
return 0;
}
while循环中的continue:
#include <stdio.h>
//用while循环输出0到9的数字。
int main()
{
int i = 0;
while(i<10)
{
if(i==5)
//当i等于5的时候,跳过continue后面的代码,所以输出到4之后,就陷入了死循环
continue;
printf("%d ", i);
i++;
}
return 0;
}
for中的break:(与while循环中的一致)
#include <stdio.h>
//用for循环输出1到10的数字
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i==5)
//当i等于5的时候执行break语句,直接跳出循环,输出1,2,3,4
break;
printf("%d ", i);
}
return 0;
}
for循环中的continue语句:(与while有所不同)
#include <stdio.h>
//用for循环打印1到10的数字
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i==5)
//当i等于5的时候,跳过continue后面的代码,输出不会输出5
continue;
printf("%d ", i);
}
return 0;
}
for循环中的continue和while循环中的continue,的不同之处小伙伴们了解了吗?他们的相同之处都是当判断表达式成立时,跳过continue后面的语句,while中的是跳过了printf和i++所以它执行到4的时候就出现死循环了,而for中的只是跳过printf不打印5,但是我的i++依旧执行。
do while中的break和continue与while中的一致,小伙伴可以自行测试一下哦~
循环的嵌套
目前我们已经把三种循环都讲解了一遍,当然循环的嵌套可以在写代码帮助我们更好的解决难题。题目:找出100~200之间的素数,并打印在屏幕上。素数又叫质数,它只能被1和它本身整除。代码实现如下:
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for(i=100; i<=200; i++)
{
int flag = 1; //设flag为1时是素数
//素数只能被1和它本身整除,那么取值就为2~i-1
int j = 0;
for(j=2; j<=i-1; j++)
{
//当输入的数值能够被2~j-1的数字整除为0的时候,那么它不是素数,遇到break则跳出循环
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
{
printf("%d ", i);
count++;
}
}
printf("count=%d\n", count);
return 0;
}
goto语句
C语言提供了一个特别的语法,那就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。如代码所示:
#include <stdio.h>
int main()
{
printf("hehe\n");
goto yes;
printf("hello world\n");
yes:
printf("haha\n");
//输出的结果就是printf只打印hehe和haha,不打印hello world,跳过中间的代码
return 0;
}
当然我们尽量在使用goto语句的时候,尽量不要使用太多,稍有使用不当会照成不可预知的后果,或导致在函数内随意的乱跳动,当然在使用多重循环的时候,用break要使用很多个,这里直接使用goto语句用来跳出循环,是最方便的啦。
今天的就把循环与分支都介绍完啦。谢谢小伙伴们的观看,欢迎在评论区留言~