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 - While 循环

在 C 语言中,while 是用于构成循环的关键字之一。while 循环是C 语言中最常用的循环类型之一。C 语言中的其他循环关键字包括 fordo-while

while 循环通常被称为入口验证循环,而 do-while 循环 被称为出口验证循环。另一方面,for 循环 是一个自动循环

C while 循环的语法

构建 while 循环的语法如下 -

while(expression){
   statement(s);
}

while 关键字后跟一个括号,括号内应包含一个布尔表达式。括号后,花括号内是一段语句。

C 语言 while 循环流程图

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

C 语言中的 while 循环

C 语言中 while 循环的工作原理是什么?

C 编译器 会计算表达式的值。如果表达式为真,则执行其后的代码块。如果表达式为假,编译器将忽略 while 关键字后面的代码块,并继续执行该代码块之后的下一个语句。

由于在程序进入循环之前会先测试控制循环的表达式,因此 while 循环被称为进入验证循环。这里需要注意的关键点是,如果在第一次执行时发现条件不成立,while 循环可能根本不会执行。

while 关键字意味着只要表达式为真,编译器就会继续执行接下来的代码块。条件位于循环结构的顶部。每次迭代之后,都会测​​试条件。如果条件为真,编译器将执行下一次迭代。一旦发现表达式为假,循环体将被跳过,并执行 while 循环后的第一个语句。

C 语言 while 循环示例

以下程序打印"Hello World"消息五次。

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

   // 局部变量定义
   int a = 1;

   // while 循环执行
   while(a <= 5){
      printf("Hello World 
");
      a++;
   }
   printf("End of loop"); 
   return 0;
}

输出

此处,while 循环充当计数循环。运行代码并检查其输出 -

Hello World
Hello World
Hello World
Hello World
Hello World
End of loop

示例说明

while 语句之前,控制循环次数的变量"a"被初始化为 1。由于条件"a <= 5"为真,程序进入循环,打印消息,将"a"加 1,然后返回循环顶部。

在下一次迭代中,"a"为 2,因此条件仍然为真,因此循环再次重复,直到条件变为假。循环停止,程序控制转到该代码块的下一步。

现在,将"a"的初始值更改为 10,然后再次运行代码。现在输出将显示以下内容:

End of loop

这是因为 while 关键字之前的条件在第一次迭代中就为 false,因此该代码块不会重复执行。

"char"变量表示与其 ASCII 值对应的字符。因此,它可以递增。因此,我们将变量的值从"a"递增到"z"。

将 while 用作条件循环

您可以将 while 循环用作条件循环,循环将一直执行到满足给定条件为止。

示例

在此示例中,while 循环用作条件循环。循环持续重复,直到收到的输入为非负值。

#include <stdio.h>

int main(){

   // 局部变量定义 
   char choice = 'a';

   int x = 0;

   // while 循环执行
   while(x >= 0){
      (x % 2 == 0) ? printf("%d is Even 
", x) : printf("%d is Odd 
", x);

      printf("
 Enter a positive number: ");
      scanf("%d", &x);
   }
   printf("
 End of loop");
   return 0;
}

输出

运行代码并检查其输出 −

0 is Even

Enter a positive number: 12
12 is Even

Enter a positive number: 25
25 is Odd

Enter a positive number: -1

End of loop

带有 break 和 continue 的 While 循环

在上面所有示例中,while 循环旨在重复执行一定次数,或直到满足特定条件。C 语言使用 breakcontinue 语句来控制循环。这些关键字可以在 while 循环内部使用。

示例

break 语句终止循环 -

while (expr){
   . . .
   . . .
   if (condition)
      break;
   . . .
}

示例

continue 语句使循环从头开始重复执行 -

while (expr){
   . . .
   . . .
   if (condition)
      continue;
   . . .
}

更多 C while 循环示例

示例:打印小写字母

以下程序借助 while 循环打印所有小写字母。

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

   // 局部变量定义
   char a = 'a';

   // while 循环执行
   while(a <= 'z') {
      printf("%c", a);
      a++;
   }
   printf("
 End of loop"); 
   return 0;
}

输出

运行代码并检查其输出 −

abcdefghijklmnopqrstuvwxyz
End of loop

示例:使两个变量相等

在下面的代码中,我们有两个变量"a"和"b",分别初始化为 10 和 0。在循环内部,每次迭代时,"b"都会递减,"a"都会递增。循环会重复执行,直到"a"和"b"不相等。当两者都达到 5 时,循环结束。

#include <stdio.h>

int main(){

   // 局部变量定义
   int a = 10, b = 0;

   // while 循环执行
   while(a != b){
      a--;
      b++;
      printf("a: %d b: %d
", a,b);
   }
   printf("
 End of loop");
   return 0;
}

输出

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

a: 9 b: 1
a: 8 b: 2
a: 7 b: 3
a: 6 b: 4
a: 5 b: 5

End of loop

while 与 do while 循环

do-while 循环在大多数情况下与 while 循环类似,尽管其语法有所不同。do-while 循环被称为 退出验证循环。在某些情况下,它们的行为有所不同。whiledo-while 循环之间的区别将在本教程的 do-while 章节中解释。

c_loops.html