[C.C++] 【C语言】C控制语句—循环

331 0
Honkers 2025-6-4 08:27:57 | 显示全部楼层 |阅读模式

目录

while语句

for语句

do while语句

goto语句


while语句

语法结构:

  1. while ( expression )
  2.     statement
复制代码

statement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复杂语句

如果expression为真(非零),执行statement部分一次,然后再次判断expression。在expression为假(0)之前,循环的判断和执行一直在重复进行。每次循环都被称为一次迭代。

拓展:在C中,真的概念很宽泛,所有的非零值都被视为真,只有0被视为假。C99专门针对真假类型的变量提出了_Bool类型,_Bool类型变量只能只能存储1(真)或假(0),如果把其他非零数值赋给此类型变量,该变量会被设置为1。

 在构建while循环时必须让测试值有变化,表达式最终的结果要为假,否则循环就不会终止(实际上还可以用break语句和if语句来终止循环,后面会说到),如下此代码段执行就会不停的打印"Good moring"

  1. index = 1;
  2. while (index < 5)
  3. printf("Good morning!\n");
复制代码

while循环经常使用关系表达式:

简单的关系表达式由关系运算符及其运算对象组成,如果关系为真,关系表达式的值为1如果关系为假,关系表达式的值为0。

        示例:

        5 > 2 为真,关系表达式的值为1

      ( 2 +  a )==  a  为假,关系表达式的值为0

关系表达式中间的运算符叫关系运算符,每个运算符都把它左侧的值和右侧的值相比较。

关系运算符
运算符含义
<小于
<=小于或等于

==

等于
>=大于或等于
>大于
!=

不等于


C语言中引入了break语句和if语句来跳出循环

break:

在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

所以:while中的break是用于永久终止循环的。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 1;
  5. while (i <= 10)
  6. {
  7. if (i == 5)
  8. break;
  9. printf("%d ", i);
  10. i = i + 1;
  11. }
  12. return 0;
  13. }
复制代码

该代码运行结果:1 2 3 4,当i ==5时,循环结束,5不打印

continue:

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,

而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 1;
  5. while (i <= 10)
  6. {
  7. if (i == 5)
  8. continue;
  9. printf("%d ", i);
  10. i = i + 1;
  11. }
  12. return 0;
  13. }
复制代码

当i==5时跳过continue后面的语句(while循环中的),所以该程序执行结果为:1 2 3 4


for语句

循环结构一般包含三个部分:初始化,判断部分,调整部分

语法结构: for(表达式1; 表达式2; 表达式3)

                        statement

注解:表达式1在执行for语句之前只执行一次;然后对表达式2求值,如果表达式为真,执行循环一次;接着对表达式3求值,并再次检查表达式2。for语句是一种入口条件循环,即在执行循环之前就决定了是否执行循环。因此,for循环可能一次都不执行。statement部分可以是一条简单语句或复杂语句。

表达式**1**

表达式1为初始化部分,用于初始化循环变量的。

第一个表达式不一定是给变量赋初值,也可以使用printf()。在执行循环的其他部分之前,只对第一个表达式求值一次或执行一次

  1. for (printf("Keep entering numbers!\n");num != 6;scanf("%d",&num))
复制代码

表达式**2**

表达式2为条件判断部分,用于判断循环时候终止。

表达式**3**

表达式3为调整部分,用于循环条件的调整。

建议:for循环不可在循环体内修改循环变量,防止for循环失去控制

建议for语句中的循环控制变量的取值采用“前闭后开区间”写法

可以省略一个或多个表达式但是不能省略分号,只要在循环中包含能结束循环的语句即可(判断部分省略的话,此部分恒为真)


do while语句

语法:

  1. do
  2. 循环语句;
  3. while (表达式);
复制代码

注解:在表达式为假或0之前重复执行循环语句,do while循环是出口条件循环,即在每次迭代之后检查测试条件,保证了循环至少执行一次,但是使用场景有限,所以不是经常使用

  1. do
  2. scanf("%d", &number);
  3. while (number != 20);
复制代码

do while语句中的break和continue

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 10;
  5.    
  6. do
  7. {
  8.        if(5 == i)
  9.            break;
  10. printf("%d\n", i);
  11. } while(i<10);
  12.    
  13. return 0;
  14. }
  15. #include <stdio.h>
  16. int main()
  17. {
  18. int i = 10;
  19.    
  20. do
  21. {
  22.        if(5 == i)
  23.            continue;
  24. printf("%d\n", i);
  25. }while(i<10);
  26.    
  27. return 0;
  28. }
复制代码

goto语句

 C语言中提供了可以随意“滥用”的 goto语句和标记跳转的标号。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码,但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

  1. for(...)
  2.    for(...)
  3.   {
  4.        for(...)
  5.       {
  6.            if(disaster)
  7.                goto error;
  8.       }
  9.   }
  10.    …
  11. error:
  12. if(disaster)
  13.         // 处理错误情况
复制代码

只能在一个函数范围内跳转,不能跨函数,运用于跳出多层嵌套

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4014
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行