【C语言】循环语句(语句使用建议)


循环语句

循环结构:允许一段代码重复执行直到满足某个特定条件,循环语句有效地编写代码,避免复杂度–>使用for、while、do while等实现循环结构使用for、while、do while等实现循环结构

本次开始循环结构的学习,会有习题加深理解

请添加图片描述

while循环

语法:
while(循环条件)
    循环体语句块
  • (1) 判断循环条件是否满足,不满足就退出循环体。
  • (2) 执行循环体。
  • (3) 返回第(1)步

如果循环条件根本不能成立,则不执行循环体,若循环条件总是成立,则成为死循环。根据不同实际需要来控制循环条件和控制循环变量数值

//如果条件一直满足,就会出现死循环
while(1)
{   
    printf("死循环\n")}

while循环的实践

在屏幕上打印1~10的数值

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

补充:if语句与while语句区别

if和while语句在语法结构是十分相似

if(条件表达式)
    语句块
while(循环条件)
    语句块

区别:虽然if和while语句都是通过循环条件,判断是否执行语句块,但是while语句是循环语句,意味着while中的语法块可以多次执行,直到不满足条件表达式。

for循环(使用频率最高)

语法:
for(表达式1;表达式2;表达式3)
		循环体语句块
  • 表达式1:用于循环变量的初始化–省略不对循环控制变量赋值

  • 表达式2:用于循环结束条件判断–省略进入死循环

  • 表达式3:用于循环变量调整–省略不对循环控制变量经行调整

  • (1)计算初始表达式

  • (2)判断循环条件,若满足,则执行;否则,退出循环。

  • (3)执行循环

  • (4)返回第(2)步

整个循环过程中,表达式1初始化部分只被执行1次,剩下就是表达式2、循环语句、表达式3在循环。

for循环的实践

在屏幕上打印1~10的数值

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

while循环和for循环的对比

请添加图片描述

while和for在实现循环中,都有三个部分:循环变量初始化、条件表达式、控制循环变量大小。从形式来说for循环的三个部分非常集中方便代码的维护,而while循环的三个部分比较分散

当需要使用循环语句时,while循环和for循环都是不错的选择。

小技巧:当不知道for循环判断条件怎么设定,可带入个临界值对比预期效果,再进行调整判断条件

重点还是放在上面的循环语句

Do-while循环

语句:
do
    循环体语句块
    while(循环条件);//不要忘记;号

Do-while语句属于当型循环结构,至少循环一次循环体语句再经行判断循环条件是否继续进入循环中

  • (1) 执行一次循环体。
  • (2) 判断是否满足循环条件,若满足,则循环,转到(1)继续执行;否则,执行随后的语句。

break和continue语句

在循环执行过程中,可能会出现状况,需要提前终止循环。C语言提供了break和continue关键字。

break:是终止本级循环,常用于for,while,do以及switch语句中。当执行一个循环体时,break被执行将立刻跳出循环体,且只退出本级循环

continue:是跳过(不执行)本次循环continue后面的代码,转为继续执行下一次循环体。for循环和while循环中有所差异,在于受到调整循环变量大小位置上的影响

请添加图片描述

循环的嵌套

前面学习for、while、Do-while循环,这三种循环往往嵌套在一起可以更好的解决问题

比如:实现排序,做题

练习:打印100~200之间的素数(素数⼜称质数,只能被1和本身整除的数字)

int main()
{
	for (int i = 101; i <= 200; i=i+2)//产生100到200的数字--偶数一定是素数
	{
		int flag = 1;
		for (int j = 2; j < i; j++)//能被2到N-1整除的不是素数
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if(flag==1)
		printf("%d ",i);
	}
	return 0;
}

goto语句(不常用)

如果需要实现在同一个函数内跳转到设置好的标号处的效果,可以用到goto语句和跳转标号。

int mian()
{
	printf("准备开始\n");
    goto next;
    printf("被跳过");
        
  next;
    printf("程序来到这里");
    return 0}

这里就像goto next与next中内容被注释掉,既然goto语句具有跳转的效果,如果使用不当,可能会打乱程序执行的流程
使用场景:适用于跳出多层循环,比如嵌套三层for循环需要提前跳出循环,需要三个break才能跳出循环,而goto可以更加快捷跳出循环
建议:自从提倡结构化设计以来,goto就成为有争议的语句,goto语句能不用就不使用

循环语句的效率(来自于高质量的C/C++编程书籍)

这里主要提及了三个方面

  1. 长短循环在不同层循环的效率问题
  2. 循环体中逻辑判断设计的效率问题
  3. for循环变量范围的书写问题

1.尽量应当将最长的循环放在最内层,最短的循环放在最外层,为了减少CPU切换循环层的次数,以便于提高程序效率

请添加图片描述

2.如果循环体内存在逻辑判断,并且循环次数很大,应将逻辑判断移到外面

3.for语句中循环控制变量循环体的外面,目的为了高效保持循环"流水线"作业,使得编译器能对循环进行优化处理,提高效率。如果N非常大,推荐右边的写法,可以提高效率如果N非常小,两者效率差别并不明显,建议采用左边的写法,因为程序可读性更强

请添加图片描述

个人理解:如果需要多次使用判断语句,这样子会导致流水线会停下来,影响到效率,将判断放外面先经行判断,再高效地循环"流水线"工作

3.1不能在for循环体内修改循环变量,可以调整循环变量大小,防止for循环失控

3.2 for循环中循环控制变量的取值采用“半开半闭区间”写法,这样的写法更加直观知道起点到终点的间隔为多少,循环次数为多少

1.for(int i=0;i<N;i++)  2.for(int i=0;i<=N-1;i++)

个人理解:两者的功能是相同的,不管上面的那一种写法并不是固定的,还是根据实际需要选择,如果是实现一样的效果,还是推荐"半开半闭区间",不要忘记循环判断条件取值得小妙招!

感谢各位的观看,本店先更新完C语言章节,C++系列,在C语言系列结束更新。

相关推荐

  1. C语言】分支循环语句

    2024-03-21 05:28:04       33 阅读
  2. c语言之for循环语句

    2024-03-21 05:28:04       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 05:28:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 05:28:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 05:28:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 05:28:04       20 阅读

热门阅读

  1. Python字典的基本用法

    2024-03-21 05:28:04       17 阅读
  2. 接口、抽象类和内部类

    2024-03-21 05:28:04       20 阅读
  3. LeetCode_30_困难_串联所有单词的子串

    2024-03-21 05:28:04       19 阅读
  4. js读取本地 excel文件、txt文件的内容

    2024-03-21 05:28:04       21 阅读
  5. ansible 管理工具以及常用模块

    2024-03-21 05:28:04       19 阅读
  6. 开源IT自动化运维工具Ansible解析

    2024-03-21 05:28:04       17 阅读
  7. 非插件方式为wordpress添加一个额外的编辑器

    2024-03-21 05:28:04       21 阅读