for循环

阶乘

  • n!=1×2×3×4×…×n
  • 写一个程序,让用户输入n,然后计算输出n!
  • 变量:
    • 显然读用户的输入需要一个int的n,然后计算的结果需要一个变量保存,可以是int的factor,在计算中需要一个变量不断的从1递增到n,那可以是int的i。

      for循环的语法

      1. for(init;condition;increment)
      2. {
      3. statement(s);
      4. }
      下面是for循环的控制流
  1. init 会首先被执行,且只会执行一次。这一步允许声明并初始化任何循环控制变量(仅C99支持声明变量)。也可以不在这里写任何语句,只要有一个分号出现即可。
  2. 接下来会判断 condition 。如果为真,则执行循环主体;如果为假,则不执行循环主体,且控制流会跳转到紧接着for循环的下一条语句。
  3. 在执行完for循环主体后,控制流会跳回上面的 increment 语句。该语句允许更新循环控制变量。该语句也可以留空,只要条件后面有一个分号即可。
  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

注意:

做求和的程序时,记录结果的变量应该初始化为0;而在做求积的程序时,记录结果的变量应该初始化为1。

循环的计算和选择

for循环和while循环时等价的 for==while

tips for loops

  • 如果有固定循环次数,就用for
  • 必须执行一次循环,就用do_while
  • 其他情况用while

循环控制

break语句

终止循环switch语句,程序流将执行紧接着的循环或者switch的下一条语句。

C语言中的break语句有以下两种用法:

  1. 当break语句出现在循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  2. 它可用于终止switch语句中的一个case。

如果是嵌套循环(即一个循环内嵌套另一个循环),break语句会停止执行最内层循环,然后开始执行该块之后的下一行代码。

语法

C语言中的break语法:

  1. break;

continue语句

告诉一个循环体立即终止本次循环迭代,重新开始下一次循环迭代。

continue语句不会强制终止循环,而是会跳过循环,强行开始下一次循环。对于for循环,continue语句执行后自增语句仍然会执行;对于while和do-while循环,continue语句执行后则会重新执行条件判断语句。

语法

C语言中continue语句的语法:

  1. continue;

嵌套循环

  • 循环里面还是循环,仅此而已。

    离开多重循环

  • break和continue只能离开它所在的那层循环。

    goto语句

    将控制转移至被标记语句。但不建议在程序中使用goto语句。

C语言中的goto语句允许把控制无条件的转移到同一函数内被标记的语句。
注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

语法

C语言中goto语句的语法:

  1. goto label;
  2. ...
  3. ..
  4. label:
  5. ....

在这里,label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。


循环应用