【C语言】循环语句


㊙️小明博客主页:➡️ 敲键盘的小明 ㊙️
✅关注小明了解更多知识☝️



前言

提示:本篇文章为C语言循环语句的个人总结,内容如若有误,请及时联系我更正。

  • 转载请注明原创,谢谢。

在这里插入图片描述

提示:以下是本篇文章正文内容:

一、什么是循环语句?

  我们都知道,选择语句主要用于根据特定条件,来选择执行不同的代码分支,例如判断奇偶,判断年龄等。
  而循环语句主要用于实现重复执行一段代码的功能,例如计数、累计求和等。
  所谓循环,其实就是重复地执行同一段代码,直到满足特定的条件。


二、while循环语句


注:C语言中:0表示假,非0表示真


1. 语句格式

whlie ( 判断表达式 )
{
  循环语句
}

过程:
  若 while 后面的判断表达式,则程序会进入到 while 循环中循环语句,当执行完一次语句后,将会再次跳到 whlie ( 判断表达式 ) ,来判断表达式是不是为真,为,则再一次进入while循环中执行语句。

2. while语句的使用方法


在屏幕上依次打印1~10:

#include<stdio.h>
 
int main()
{
    int i = 1;
    while(i <= 10)
    {
        printf("%d ", i);
        i++;
    }
    return 0;
}

运行结果:
在这里插入图片描述

过程: 我们将 1 1 1 赋值给 i i i ,在执行循环语句判断表达式时, 1 1 1 确实是小于 10 10 10 ,用于判断的表达式为,则执行了printf在屏幕上打印了: 1 1 1 ;然后 i i i ++ 变为了 2 2 2 ,再次进行循环语句判断表达式的判断, 2 2 2 是小于 10 10 10 ,则在屏幕上打印了 2 2 2 ,依次往复在 i i i <= 10 10 10 之前,会依次打印:1 2 3 4 5 6 7 8 9 10,然后 i i i ++ 变为了 11 11 11 ,此时的判断表达式不成立,则终止并退出了循环。

3. while循环中的break

   w h i l e while while 循环中,当满足一定条件时,循环会提前结束。 b r e a k break break 语句就是用来实现这个功能的。

  当程序执行到 break 语句时,会立即跳出当前循环,不再执行循环体内的后续代码。

#include <stdio.h>
int main()
{
    int i = 1;
    while (i <= 10)
    {
        if (i == 5) //i等于5时直接跳出循环
        {
            break;
        }
        printf("%d ", i);
        i++;
    }
    return 0;
}

运行结果:
在这里插入图片描述

过程: 在本代码的结果是屏幕上依次打印出:1 2 3 4
  前 4 4 4 次循环都满足条件,在屏幕上依次打印出:1 2 3 4 后,当 i i i++ i = 5 i=5 i=5 时, i f if if 语句的判断表达式成立,程序进入 i f if if 语句的执行语句中,执行了 b r e a k break break 语句,跳出了 w h i l e while while 循环,程序结束。

4. while循环中的continue

  既然我们了解到了 b r e a k break break 在循环语句中的作用,那么我们再来了解一下与 b r e a k break break 作用很相似的 c o n t i n u e continue continue 在循环中的作用:

  当程序执行到 continue 语句时,会跳出本层本次循环,不再执行循环体内的后续代码,转而执行下一次循环

#include <stdio.h>
int main()
{
	int i = 1;
	while(i<=10)
	{
		if(i == 5)
		{
			continue;
    	}
   		printf("%d ", i);
   		i++;
 	}
	return 0;
}

运行结果:
在这里插入图片描述

本段代码的运行结果也同样是在屏幕上打印了:1 2 3 4
过程: 本段代码在打印完 1 2 3 4 后便进入了死循环。因为当 i = 5 i = 5 i=5 后,下面的 p r i n t f printf printf 语句和 i i i++ 的语句是不执行的,然后会来到 w h i l e while while 的判断部分,此时的 i i i 是没有变的,还是 5 5 5 ,所以程序又会跳过下面的语句再次进行判断, i i i 一直等于 5 5 5 ,就一直这样 死循环


让我们再来看一段代码:

#include <stdio.h>
int main()
{
	int i = 1;
	while(i<=10)
	{
		i++;
		if(i == 5)
		{
			continue;
    	}
   		printf("%d ", i);
 	}
	return 0;
}

运行结果:
在这里插入图片描述

本段代码的运行结果在屏幕上打印了:2 3 4 6 7 8 9 10 11
过程:
  本段代码的运行过程为:由于 i i i++ 被我们移到了前面,所以在进入循环后先执行了 i i i++ ,此时 i i i 变为了 2 2 2 ,然后依次打印了 3 3 3 4 4 4之后,当 i = 5 i = 5 i=5时,执行了 c o n t i n u e continue continue 跳出了本次循环,然后再次进入循环执行 i i i++ 变为 6 6 6 ,然后依次打印了 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 直到程序结束,一共在屏幕上输出了从 2 2 2 开始、除 5 5 5 之外的其他 9 9 9 位数:2 3 4 6 7 8 9 10 11


三、for循环语句

1. 语句格式

for ( 初始化循环变量 ; 循环条件 ; 变量更迭 )
{
  循环语句
}

过程:
  先初始化循环变量,然后判断循环条件是否为,若为真则程序执行循环体语句并进行变量更迭,然后再一次判断循环条件是否为真,若为真则会再一次执行循环体语句并继续进行变量更迭,直到判断循环条件为,则退出循环结构。

2. for语句使用方法


让我用for循环语句也来在屏幕上依次打印1~10:

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

运行结果:
在这里插入图片描述

本段代码是在屏幕上依次打印:1 2 3 4 5 6 7 8 9 10
过程: 我们先初始化 i i i ,然后判断循环条件, 1 1 1 确实是小于 10 10 10 ,循环条件为,则执行了printf在屏幕上打印了: 1 1 1 ;然后执行变量的更迭 i i i ++ 变为了 2 2 2 ,再次进行循环条件的判断, 2 2 2 是小于 10 10 10 ,则在屏幕上打印了 2 2 2 ,依次往复在 i i i <= 10 10 10 之前,会依次打印:1 2 3 4 5 6 7 8 9 10,然后 i i i ++ 变为了 11 11 11 ,此时的判断表达式不成立,则终止并退出了循环。

3. for循环中的break

 在 C 语言中, f o r for for 语句中的 b r e a k break break 作用也同样是跳出 f o r for for 语句。

  当程序执行到 break 语句时,会立即跳出当前循环,不再执行循环体内的后续代码。

例如:

#include <stdio.h>
int main()
{
    int i = 1;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
        {
            break;
        }
        printf("%d ", i);
    }
    return 0;
}

运行结果:
在这里插入图片描述

本段代码是在屏幕上依次打印:1 2 3 4
过程: 在本代码中,前 4 4 4 次循环都满足条件,在屏幕上依次打印出:1 2 3 4 后,当 i i i++ i = 5 i=5 i=5 时, i f if if 语句的判断表达式成立,程序进入 i f if if 语句的执行语句中,执行了 b r e a k break break 语句,跳出了 f o r for for 循环,程序结束。

4. while循环中的continue

  当程序执行到 continue 语句时,会跳出本层本次循环,不再执行循环体内的后续代码,转而执行下一次循环

#include <stdio.h>
int main()
{
    int i = 1;
    for (i = 1; i <= 10; i++)
    {
		if (i == 5)
		{
			continue;
		}
		printf("%d ", i);
    }
    return 0;
}

运行结果:
在这里插入图片描述

本段代码是在屏幕上打印:1 2 3 4 6 7 8 9 10
过程:
  但是,本段代码与 w h i l e while while 不同,在打印完 1 2 3 4 不会进入死循环。因为当 i = 5 i = 5 i=5 后,只有下面的一条 p r i n t f printf printf 语句是不执行的,然后再到 f o r for for 的变量更迭,此时的 i i i ++ 后变为了 6 6 6 ,然后继续依次打印 6 7 8 9 10


5. 一些for循环的变种

  在C语言的循环语句中,初始化、判断、变量调整这三个部分都是可以省略的,但是,判断部分如果省略了,判断部分会恒为真。

#include <stdio.h>
int main()
{
    int ret = 1;
    for (;;)
    {
        printf("%d: hehe\n",ret);
        ret++;
    }

    return 0;
}

运行结果:
在这里插入图片描述


四、do…while语句

1. do while循环中

do {
  循环语句
}( 判断表达式 )

过程:
   d o … w h i l e do…while dowhile循环是先执行一遍语句,再进行判断,它和while语句的区别就是: d o … w h i l e do…while dowhile 至少 执行一次循环内的语句,而 w h i l e while while有可能会因为先判断后执行循环体导致循环一次都不进行。


五、while循环和for循环的区别

   f o r for for循环可以实现 w h i l e while while循环的功能, w h i l e while while循环也可以实现 f o r for for循环的功能,没有那个更好的说法,要看应用场景。

  for循环更合适事先知道循环总次数的场景,一般与计数器或数组结合一起使用。

  while循环更合适事先不知道循环总次数的场景,以达到某个目标为目,例如选秀,报名有多少人没关系,已选够10位或没人可选作为循环的结束。


六、例题

练习一:

求1~100的累计和

#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for(i = 1; i <= 100; i++)
	{
		sum += i;
	}
	printf("sum=%d\n",sum);
	return 0;
}

运行结果:
在这里插入图片描述


练习二:

n n n 的阶乘
 例:5! = 1×2×3×4×5 = 120

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int ret = 1;
	for (i = 1; i <= n; i++)
	{
		ret *= i;
	}
	printf("%d\n", ret);

	return 0;
}

运行结果:
在这里插入图片描述

练习三:

数一下 1 ~ 100 的所有整数中出现多少个数字 9

#include <stdio.h>
int main()
{
	int i = 0;
	int count = 0;

	for (i = 1; i <= 100; i++)
	{
		if (i % 10 == 9)
		{
			printf("%d ", i);
			count++;
		}
		if (i / 10 == 9)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\n");
	printf("共%d个\n", count);
	return 0;
}

运行结果:
在这里插入图片描述


七、goto语句

  goto 语句是一种无条件跳转语句,它用于在程序中实现立即跳转到指定的标签所在的位置。
  goto 语句通常与 if 语句、循环结构等配合使用,以实现复杂的逻辑控制。但是,需要注意的是,滥用 goto 语句可能导致程序逻辑混乱,难以维护。
  因此,在编写程序时,应尽量避免过度使用 goto 语句,尤其是在复杂的逻辑控制中。可以考虑使用其他控制结构(如 if-else 语句、switch 语句等)替代 goto 语句。

  但是特殊场合下goto语句还是用得着的,比如终止某些深度嵌套。多层循环这种情况使用break只能从最内层循环退出到上一层的循环。


完结

好啦,阅读到这里就已经看完了本期博客的全部内容了
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲键盘的小明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值