C语言学习NO.4-break和continue语句;while,for,do…while循环语句

break和continue语句

在介绍循环语句前,先介绍一下break和continue语句。在循环执行过程中,可能遇到需要终止循环的情况时,需要利用break和continue达到目的。

  • break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环,执行循环外的下一语句;
  • continue的作用是跳过本次循环continue后的代码,在for循环和while循环中存在差异。

while语句

一、while语句的语法结构

while(表达式)
    语句;//在循环体中想包含更多语句,可以加上大括号

if语句执行时,只执行一次,而while是循环语句,在它之后的语句在执行时,会一直执行。遇到人为无法干涉的循环时称为死循环。

#include <stdio.h>

int main()
{
    

二、while语句的执行流程

  • 首先判断表达式,表达式的值为0,循环直接结束;
  • 表达式的值不为0,执行语句后再次判断表达式的值;
  • 表达式的值不为0,遇到break,则跳出循环,语句在break前就执行,循环结束(一般情况下,break放在语句后);
  • 表达式的值不为0,执行语句后,遇到continue,后面的语句会被跳过,不执行(一般情况下,continue放在语句前),转而回到循环的开始,再次判断表达式的值。

三、while循环的练习

:::info
练习1:在屏幕上打印出1-100的奇数
:::

#include <stdio.h>

int main()
{
    int a = 1;//变量初始化

    while(a <= 100)//while的循环语句
    {
        if(a%2 == 1)//判断数字是否为奇数
        {
            printf("%d ",a);//打印出所判断出来的奇数,
        }//%d 这样的格式让数字分隔开,更清晰
        a++;1100逐渐增加
    }
    return 0;
}

结果显示如下:
image.png
:::info
练习2:输入一个正的整数,逆序打印出这个整数的每一位
例如:输入:1234,输出:4 3 2 1
:::

#include <stdio.h>

int main()
{
	int a = 0;//变量初始化

	//输入
	scanf("%d",&a);//记得取地址

	while (a != 0)//while循环,表达式是当a除尽10时等于0
	{
		printf("%d\n",a%10);//此时的a是进入循环的a
		a = a / 10;//此处的a被赋值为a/10
	}
	return 0;
}

结果显示为:
image.png

for循环

一、语法结构

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

for(表达式1;表达式2;表达式3)
    语句;//如果循环像包含更多语句可以加上大括号
//表达式1是用于循环变量的初始化
//表达式2是用于循环结束条件的判断
//表达式3适用于循环变量的调整

二、for循环的执行流程


三、for循环练习

:::info
练习1:在屏幕上打印出1-100的奇数
:::

#include <stdio.h>

int main()
{
    int i = 1;

    //for循环
    for (i = 1; i <= 100; i++)
    {
        if (i % 2 == 1)//判断是否为奇数
        {
            printf("%d ",i);//输出i对应的奇数
        }
    }
    return 0;
}

:::info
练习2:计算1-100之间3的倍数的数字之和
:::

#include <stdio.h>

int main()
{
	int i = 1;
	int sum = 0;
	//循环
	for (i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)//判断是否是3的倍数
		{
			sum += i;
		}//当第一次倍数时,i=3,第二次为6
	}
	printf("%d",sum);
	return 0;
}

//优化,上列循环中,需要循环100次

#include <stdio.h>

int main()
{
    int i = 0;
    int sum =0;

    //循环
    for(i=3; i<=100; i+=3)
    {
        sum += i;
    }
    printf("%d",sum);
    return 0;
}

while和if循环的区别

while和if循环过程中都有初始化、判断、调整这三个部分,但是if循环的三个部分非常集中,便于代码维护,如果代码较多的时候while循环的三个部分比较分散,形式上for循环更醒目。
image.pngimage.png

do-while循环

一、do-while语法结构

在循环语句中,do while语句的使用最少。

do
{
    语句;
}while(表达式)//注意此处while后有分号
  • while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;
  • 而 do while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

二、do while循环的执行流程图


do while 语句中的循环体至少执行一次。

三、do while练习

:::info
练习1:在屏幕上打印1-100的奇数
:::

#include <stdio.h>

int main()
{
    int i = 1;//变量初始化

    //循环
    do
    {
        if (1 == i % 2)//判断是狗为奇数
        {
            printf("%d ", i);//打印出所以奇数
        }
        i++;//调整
    } while (i <= 100);//while后注意有分号
        return 0;
}

:::info
练习2:输入一个正整数,计算这个整数是几位数?
例如:输入:1234 输出:4
:::

#include <stdio.h>

int main()
{
	int i = 0;
	int num = 0;

	//输入
	scanf("%d", &i);//记得取地址

	//循环
	do
	{
		if (i % 10 != 0)//余数不为0,表示至少两位数,循环直到一位数
		{
			i = i / 10;//当i被除到一位数时,i为0
			num++;//计算几位数,逐渐增加
		}
	} while(0 != i);//表达式判断
	printf("%d",num );//打印出最终答案
	return 0;
}

break和continue举例

一、while循环中的break和continue

(一)while循环中的break

#include <stdio.h>

int main()
{
    int i = 0;
    while(i<=10)
    {
        if(5 == i)
            break;
        printf("%d",i);
        i += 1;
    }
    return 0;
}

遇到break则跳出循环,最后执行结果为:
image.png

(二)while循环中的continue

continue 是继续的意思,在循环中的作用就是跳过本次循环中 continue 后边的代码,继续进行下一次循环的判断。

#include <stdio.h>

int main()
{
    int i = 0;
    while(i<=10)
    {
        if(5 == i)
            continue;
        printf("%d ",i);
        i += 1;//循环的调整,位置很重要
    }//如果放在continue后方,可能陷入死循环
    return 0;
}

结果为:image.png

#include <stdio.h>

int main()
{
    int i = 0;
    while(i<=10)
    {
        if(5 == i)
            continue;
        	 i += 1;//循环的调整,位置很重要
        printf("%d ",i);
       
    }//如果放在continue后方,可能陷入死循环
    return 0;
}

结果是1 2 3 4 5 死循环(光标闪烁)
image.png

#include <stdio.h>

int main()
{
    int i = 0;
    while (i <= 10)
    {
        i += 1;//continue无法跳过这段代码
        if (5 == i)
            continue;
         printf("%d ", i);//这样写的话continue跳过printf函数
    }
    return 0;
}

image.png

二、for循环中的break和continue

(一)for循环中的break

先猜测一下结果为什么?

#include <stdio.h>

int main()
{
    int i = 0;
    for(i=1; i<=10; i++)
    {
        if(5 == i)
            break;
        printf("%d ",i);//猜猜他的结果是?
    }
    return 0;
}

image.png

(二)for循环中的continue

先猜测一下结果为什么?

#include <stdio.h>

int main()
{
    int i =0;
    for(i=1; i<=10; i++)
    {
        if(5 == i)
            continue;
        printf("%d ",i);//结果如何?
    }
    return 0;
}

image.png

三、do while循环中的break和continue

do while语句中的break和continue的作用和while循环中几乎一模一样

#include <stdio.h>

int main()
{
    int i = 0;
    do
    {
        if(5 == i)
            break;
        printf("%d ",i);
        i += 1;
    }while(i<=10);
    return 0;
}

image.png

#include <stdio.h>

int main()
{
    int i = 0;
    do
    {
        if(5 == i)
            continue;
        printf("%d ",i);
        i += 1;
    }while(i<=10);
    return 0;
}

image.png

goto语句

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

#include <stdio.h>
int main()
{
    printf("hehe\n");
    goto next;
    printf("haha\n");

next:
    printf("heihei\n");//跳过haha的打印
    return 0;
}

goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以能不用尽量不去使用;但是 goto 语句也不是一无是处,在多层循环的代码中,如果想快速跳出使用 goto 就非常的方便了。

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

本来 for 循环想提前退出得使用 break ,一个 break 只能跳出一层 for 循环,如果3层循环嵌套就得使用3个 break 才能跳出循环,所以在这种情况下我们使用 goto 语句就会更加的快捷。

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值