【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句

目录

序言

while循环

语法形式

if和while对比

while语句的执行流程

while循环的实践

for循环

语法形式

for循环的执行流程

for循环的实践

​编辑

while循环与for循环对比

do-while循环

语法形式

 do-while循环的执行流程

do-while循环的实践

循环的嵌套

goto语句

小结


序言

        在上篇博文中,我们一起探讨了C语言的分支和循环的分支部分。今天,我们继续来学习一下C语言的循环结构。C语言和我们提供了三种循环语句,分别是:while、for和do-while语句。

while循环

语法形式

        while语句的语法结构和if语句的语法结构非常相似

if (表达式)
    语句;


while (表达式)
    语句; //如果循环体想要包含更多语句,可以加上{}

if和while对比

具体写两个代码,我们可以对比看一下:

//代码1
#include
int main()
{
    if (1)
        printf("Chestnut-programming\n");//if表达式为真,打印一次Chestnut-programming

    return 0;
}


//代码2
#include
int main()
{
    while (1)
        {
            printf("Chestnut-programming\n");//while表达式为真,死循环打印
                                             //Chestnut-programming
        }

    return 0;
}



这就是它俩的区别,while语句可以实现循环的效果。

while语句的执行流程

        首先上来就是执行表达式,表达式的值为0,循环结束;表达式的值不为0,则执行循环语句,语句执行完后,在进行表达式判断,是否进行下一次判断。

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第1张图片

while循环的实践

练习:

输入一个正的整数,逆序输出这个整数的每一位数

输入样例:1234

输出样例:4 3 2 1

参考代码:

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第2张图片

题目解析:

1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4

2. 要想去掉n的最低位,找出倒数第二位,则使⽤ n=n/10 操作就可以去掉最低位的,如: n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。

3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。

for循环

语法形式

        for循环是三种循环中使用最多的,语法形式如下:

for (表达式1;表达式2;表达式3)
    语句; //如果循环体想要包含更多语句,可以加上{}

表达式1:用于循环变量的初始化

表达式2:用于循环结束条件的判断

表达式3:用于循环变量的调整

for循环的执行流程

        首先执行 表达式1 初始化循环变量,接下来就是执行 表达式2 的判断部分, 表达式2的结果如果 ==0,则循环结束; 表达式2 的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表达式 3 ,调整循环变量,然后再去 表达式2 的地方执行判断, 表达式2 的结果是否为0,决定循环是否继续。 整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第3张图片

for循环的实践

练习:

在屏幕上打印1~10的值

参考代码:

#include 
int main()
{
     int i = 0;
     for(i=1; i<=10; i++)
     {
         printf("%d ", i);
     }
 
 return 0;
}

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第4张图片

while循环与for循环对比

        for和while实现循环的时候都包含这三个部分:初始化、判断和调整。如下图,给我们更直观的感受是,for循环这三个部分更加集中一些,这样有利于我们对代码的维护,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形 式上 for 循环要更优⼀些。

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第5张图片

do-while循环

语法形式

        for和while循环是先进行判断,在确定是否进入循环体。但do-while循环是直接进入循环体,执行循环语句,再来判断表达式,表达式为真就进入下次循环,为假就跳出循环。

do
{

    语句;

}while(表达式);

 do-while循环的执行流程

        do-while循环先执行”语句“,在执行”判断表达式“,如果判断表达式结果为真,则继续执行循环语句,若为假,则跳出循环。

        所以,do-while循环中循环体至少执行一次,这是do-while循环比较特殊的地方。

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第6张图片

do-while循环的实践

练习:

输入一个正整数,计算这个整数是几位数?

参考代码:

#include 
int main()
{
     int n = 0;
     scanf("%d", &n);
     int cnt = 0;
     do
     {
         cnt++;
         n = n / 10;
     } while (n);
     printf("%d\n", cnt);
 return 0;
}

循环的嵌套

        前⾯学习了三种循环 while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决 问题,就是我们所说的:循环嵌套,这里我们就看⼀个例子。

练习:

找出100~200之间的素数,并打印在屏幕上。

参考代码:

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第7张图片

运行结果:

【C语言分支和循环2/3--循环】while、for、do-while循环和goto语句_第8张图片

题⽬解析:

1. 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使用循环解决。

2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产生2~i-1之间的数字,也可以使用循环解决。

3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

goto语句

        C语言提供了一种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内,跳转到设置好的标号处。

例如:

#include 
int main()
{
     printf("hehe\n");
     goto next;
     printf("haha\n");
 
     next:
     printf("跳过了haha的打印\n"); 
 return 0;
}

        goto语句如果使用不当,会导致在函数内部随意跳转,打乱程序的执行流程。所以,一般不建议使用goto语句。但goto语句不是一无是处,在多层循环中,如果想要快速跳出,就可以使用goto语句,这样就方便多了。

for(...)
{
     for(...)
     {
         for(...)
         {
             if(disaster)
                 goto error;
         }
     }
}

error:
 //...

本来for循环想要提前跳出,必须使用break,但是一个break只能跳出一层for循环,在这里使用在这种情况下goto语句就会更加便捷。

小结

        OK~各位大佬,小栗子和大家分享的C语言分支和循环基础知识基本告一段落啦,下一期小栗子会更新利用C语言分支和循环知识来编写一些有趣的代码~敬请期待哦~~

你可能感兴趣的:(C语言,c语言,开发语言)