C 语言编程教程

C 语言首页

C 语言基础

C 语言概述 C 语言特性 C 语言发展历史 C 语言下载安装和环境配置 C 语言程序结构 C 语言 Hello World C 编译过程 C 注释 C 标记 C 关键字 C 标识符 C 用户输入 C 基本语法 C 数据类型 C 变量 C 整数提升 C 类型转换 C 类型转换 C 布尔值

C 语言中的常量和文字

C 常量 C 字面量 C 转义序列 C 格式说明符

C 语言中的运算符

C 运算符 C 算术运算符 C 关系运算符 C 逻辑运算符 C 位运算符 C 赋值运算符 C 一元运算符 C 递增和递减运算符 C 三元运算符 C sizeof 运算符 C 运算符优先级 C 其他运算符

C 语言中的决策

C 决策 C if 语句 C if...else 语句 C 嵌套 if 语句 C switch 语句 C 嵌套 switch 语句

C 语言中的循环

C 循环 C While 循环 C For 循环 C Do...while 循环 C 嵌套循环 C 无限循环 C Break 语句 C Continue 语句 C goto 语句

C 语言中的函数

C 函数 C Main 函数 C 按值调用函数 C 按引用调用函数 C 嵌套函数 C 可变参数函数 C 用户定义函数 C 回调函数 C return 语句 C 递归

C 语言中的作用域规则

C 作用域规则 C 静态变量 C 全局变量

C 语言中的数组

C 数组 C 数组的属性 C 多维数组 C 将数组传递给函数 C 从函数返回数组 C 可变长度数组

C 语言中的指针

C 指针 C 指针和数组 C 指针的应用 C 指针运算 C 指针数组 C 指向指针的指针 C 将指针传递给函数 C 从函数返回指针 C 函数指针 C 指向数组的指针 C 指向结构体的指针 C 指针链 C 指针 vs 数组 C 字符指针和函数 C NULL 指针 C void 指针 C 悬垂指针 C 解引用指针 C Near、Far 和 Huge 指针 C 指针数组的初始化 C 指针与多维数组

C 语言中的字符串

C 字符串 C 字符串数组 C 特殊字符

C 语言的结构体和联合

C 结构体 C 结构体和函数 C 结构体数组 C 自引用结构 C 查找表 C 点 (.) 运算符 C 枚举(或 enum) C 结构填充和打包 C 嵌套结构 C 匿名结构和联合 C 联合 C Bit 位字段 C Typedef

C 语言中的文件处理

C 输入和输出 C 文件 I/O(文件处理)

C 语言中的预处理器

C 预处理器 C #pragma 编译指示 C 预处理器操作符 C 宏 C 头文件

C 语言中的内存管理

C 内存管理 C 内存地址 C 存储类

C 其他主题

C 错误处理 C 可变参数 C 命令执行 C 数学函数 C static 静态关键字 C 随机数生成 C 命令行参数

C 语言编程资源

C 语言问题与解答答案 C 语言快速指南 C 语言速查表 C 语言实用资源 C 语言讨论


C 语言中的 For 循环

包括 C 语言在内的大多数编程语言都支持使用 for 关键字来构造循环。在 C 语言中,其他与循环相关的关键字包括 while 和 do-while。与其他两种循环不同,for 循环被称为自动循环,通常是程序员的首选。

for 循环 是一种入口控制循环,它会执行语句直到满足给定条件。所有元素(初始化、测试条件和增量)都放在括号内,并使用 for 关键字组合在一起,形成一个 for 循环。

for 循环的语法

C 语言中 for 循环的语法为 -

for (init; condition; increment){
    statement(s);
}

For 循环的控制流

以下是"for"循环中的控制流 -

首先执行 init 步骤,并且只执行一次。此步骤允许您声明和初始化任何循环控制变量。此处无需添加任何语句,只要出现分号即可。

接下来,评估条件。如果条件为真,则执行循环体。如果条件为假,则不执行循环体,控制流跳转到紧邻"for"循环之后的下一个语句。

执行完"for"循环体后,控制流跳转回增量语句。此语句允许您更新任何循环控制变量。此语句可以留空,只要条件后出现分号即可。

现在再次评估条件。如果条件为真,则执行循环,并重复该过程(循环体,然后增量步骤,然后再次执行条件)。当条件变为假时,"for"循环终止。

for 循环流程图

以下流程图展示了 for 循环的工作原理 -

For 循环

当开发人员事先知道需要执行多少次迭代时,他们更喜欢使用 for 循环。它可以被认为是 while 和 do-while 循环的简写,用于递增和测试循环变量。

for 循环可以以不同的形式使用。让我们了解 for 循环在不同情况下的工作原理。

示例:基本 for 循环

这是 for 循环的最基本形式。请注意,括号内的所有三个子句(位于 for 关键字前面)都是可选的。

#include <stdio.h>

int main(){
   int a;

   // for 循环执行
   for(a = 1; a <= 5; a++){
      printf("a: %d
", a);
   }

   return 0;
}

输出

运行代码并检查其输出 −

a: 1
a: 2
a: 3
a: 4
a: 5

在循环语句前初始化 for 循环计数器

初始化步骤可以放在 for 循环头的上方。在这种情况下,init 部分必须用分号留空。

示例

#include <stdio.h>

int main(){
   int a = 1;

   // for 循环执行
   for( ; a <= 5; a++){
      printf("a: %d
", a);
   }
   return 0;
}

输出

您仍然会得到相同的输出 -

a: 1
a: 2
a: 3
a: 4
a: 5

在 for 循环体内更新循环计数器

您也可以用一个空语句代替 increment 子句。但是,您需要将 increment 语句放在循环体内,否则它会变成无限循环。

示例

#include <stdio.h>

int main(){

   int a;

   // for 循环执行
   for(a = 1; a <= 5; ){
      printf("a: %d
", a);
      a++;
   }
   return 0;
}

输出

此处,您将获得与上例相同的输出 -

a: 1
a: 2
a: 3
a: 4
a: 5

在 for 循环体中使用测试条件

您也可以省略括号中测试条件的第二个子句。在这种情况下,您需要使用 break 语句 终止循环,否则循环将无限运行。

示例

#include <stdio.h>

int main(){
   int a;

   // for 循环执行
   for(a = 1; ; a++){
      printf("a: %d
", a);
      if(a == 5)
      break;
   }
   return 0;
}

输出

执行此代码后,您将获得以下输出 -

a: 1
a: 2
a: 3
a: 4
a: 5

使用 for 循环和多个计数器

一个 for 语句中可以初始化多个变量和/或包含多个递增语句。但是,只能有一个测试条件。

示例

#include <stdio.h>

int main(){
   int a, b;

   // for 循环执行
   for(a = 1, b = 1; a <= 5; a++, b++){
      printf("a: %d b: %d a*b: %d
", a, b, a*b);
   }

   return 0;
}

输出

运行此代码时,将产生以下输出 -

a: 1 b: 1 a*b: 1
a: 2 b: 2 a*b: 4
a: 3 b: 3 a*b: 9
a: 4 b: 4 a*b: 16
a: 5 b: 5 a*b: 25

for 循环中的减量

您也可以构造一个递减的 for 循环。在这种情况下,循环变量的初始值大于其在测试条件中的值。for 语句中的最后一个子句使用了递减运算符。

示例

以下程序按降序打印数字 5 到 1 -

#include <stdio.h>
int main(){
   int a;

   // for 循环执行
   for(a = 5; a >= 1; a--){
      printf("a: %d
", a);
   }

   return 0;
}

输出

运行代码并检查其输出 −

a: 5
a: 4
a: 3
a: 2
a: 1

使用 for 循环遍历数组

For 循环 非常适合一次遍历数组中的一个元素。请注意,数组中每个元素的索引从"0"开始递增。

示例

#include <stdio.h>

int main(){
   int i;
   int arr[] = {10, 20, 30, 40, 50};

   // for 循环执行
   for(i = 0; i < 5; i++){
      printf("a[%d]: %d
", i, arr[i]);
   }

   return 0;
}

输出

运行此代码时,将产生以下输出 -

a[0]: 10
a[1]: 20
a[2]: 30
a[3]: 40
a[4]: 50

示例:使用 for 循环计算数组元素之和

以下程序计算给定数组中所有整数的平均值。

#include <stdio.h>
int main(){
   int i;
   int arr[] = {10, 20, 30, 40, 50};
   int sum = 0;
   float avg;

   // for 循环执行
   for(i=0; i<5; i++){
      sum += arr[i];
   }
   avg = (float)sum / 5;
   printf ("Average = %f", avg);

   return 0;
}

输出

运行代码并检查其输出 −

Average = 30.000000

示例:使用 for 循环计算阶乘

以下代码使用 for 循环计算一个数的阶乘值。注意,一个数的阶乘是 1 到给定数之间所有整数的乘积。阶乘的数学表示公式为:-

x! = 1 * 2 * . . . * x

以下是计算阶乘的代码:-

#include <stdio.h>

int main(){

   int i, x = 5;
   int fact = 1;

   // for 循环执行
   for(i=1; i<= x; i++){
      fact *= i;
   }
   printf("%d != %d", x, fact);

   return 0;
}

输出

运行此代码时,将产生以下输出 -

5! = 120

当重复次数已知时,for 循环是理想的选择。但是,循环行为可以通过 break 和 continue 关键字 在 for 循环体中控制。嵌套 for 循环也常用于处理二维数组。

c_decision_making.html