在本教程中,您将掌握 C 语言中循环的各个方面。C 编程语言通过 for 循环、while 循环和 do-while 循环这三种独特的方式支持循环。此外,您还将了解无限循环在 C 语言中是如何工作的。
很多时候我们会遇到一些情况,需要重复执行特定的代码块。例如,当我们计算一个数字(比如 7)的阶乘时,乘法会持续与下一个较小的数字(6、5、4……)进行,这个循环会一直持续到 1。如果我们能只编写一次通用的乘法代码,并让它重复执行直到达到期望的值(这里是 1),那将非常棒。这组被重复执行的通用代码在编程语言中统称为“循环”。
在 C 语言编程中,循环基本上分为三种
C 语言中的 'for' 关键字可以使循环执行看起来简单易懂。for 循环是 C 程序中最常用的循环,也被称为前测试循环。这是因为条件在循环体执行之前被评估。For 循环用于预先知道迭代次数的情况。
for 循环的结构以关键字 ‘for’ 开始,后跟一对括号 (),在括号中你必须写三样东西,并用分号隔开
i. 初始化 (i=1)
ii. 条件 (i<=5)
iii. 增量 (i=i+1 或 ++i 或 i++)
for (initialization; condition test; increment or decrement)
{
//loop body contains statements to be executed
}
步骤 1:首要步骤是初始化计数器变量。
步骤 2:在第二步中评估条件,其中计数器变量将根据指定条件进行测试。
步骤 3:在最后一步中,计数器变量根据操作(++ 或 --)进行递增或递减。
#include<stdio.h>
void main()
{
int i;
for(i=1;i<=10;++i)
{
printf("%d\n",(i*i));
}
}
输出
1 4 9 16 25 36 49 64 81 100
这个例子可以解释如下。
步骤 1:最初,计数器变量 i 被初始化为值 1。
步骤 2:评估条件 i <= 10,即检查 1 是否小于或等于 10,条件返回真。
步骤 3:控制转移到循环内的语句,即打印 (i*i),意味着 1*1。打印出结果 1。
步骤 4:由于操作是 i++,计数器变量的值增加到 2,并重复这些步骤直到条件失败。即当计数器变量的值达到 11 时,它将终止循环并退出循环。
包含在大括号{}内的语句构成了 for 循环的主体(循环体)。如果循环只包含一个语句,则没有必要将其括在大括号中。大括号确定了主体的作用域,因此被称为块分隔符。在 for 循环内部声明的变量的生命周期仅限于该循环,而不是外部。
#include<stdio.h>
void main()
{
int i;
for(i=1;i<=10;++i)
{
int j = 5;
printf("%d , %d\n",i,j);
}
}
输出
1 , 5 2 , 5 3 , 5 4 , 5 5 , 5 6 , 5 7 , 5 8 , 5 9 , 5 10 , 5
C 语言也支持 ‘for 循环’ 的嵌套。循环内部的循环通常称为嵌套循环。嵌套可以达到任何级别,但在编写脚本时保持简单和无复杂性是更好的选择。嵌套 for 循环通常用于表示二维数组。
for (initialization; condition; increment/decrement)
{
for(initialization; condition; increment/decrement)
{
// body of inner loop.
}
// body of outer loop.
}
请看下面的简单代码片段,展示了如何使用嵌套 for 循环打印乘法表。
#include<stdio.h>
void main()
{
for (int i=1; i<2; i++)
{
for (int j=1; j<=10; j++)
{
printf("%d x %d = %d\n",i ,j,(i*j));
}
}
}
输出
1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 1 x 5 = 5 1 x 6 = 6 1 x 7 = 7 1 x 8 = 8 1 x 9 = 9 1 x 10 = 10
C 语言中另一种可用的循环是 while 循环。像 for 循环一样,while 循环也被称为前测试循环,因为在执行前会检查条件。当我们事先不知道迭代次数时,通常使用 while 循环。
while(condition){
//body of while loop
}
在这种循环结构中,'while' 后面跟着一个条件,如果条件满足,循环就开始执行。在每个周期执行后,编译器会检查 while 下的条件是否仍然满足。如果满足,循环将一遍又一遍地执行,否则不会。
让我们看看我们如何更改前面打印数字平方的例子。
#include<stdio.h>
void main()
{
int i;
i=1;
while (i<=10)
{
printf("%d\n",(i*i));
i=i+1;
}
}
输出
1 4 9 16 25 36 49 64 81 100
请注意,我们给 'i' 的初始值为 1。在第一个周期中,'while' 检查它是否小于或等于 10。由于 1<10,代码执行并打印 1 的平方为 1。语句 'i=i+1' 将 'i' 的值从 1 增加到 2。现在 'while' 再次检查,发现 2<10,因此打印出 2 的平方,即 4。同样,3、4、……直到 10 都被打印出来。但在最后一个循环的最后一条语句中,'i' 变为 11。所以 'while' 发现 11 既不小于也不等于 10,循环终止。
像 for 循环一样,我们也可以在一个 while 循环内部嵌套另一个 while 循环。
while(condition)
{
while(condition)
{
// body of the inner loop.
}
// body of outer loop.
请看下面的例子,使用嵌套 while 循环打印乘法表。
#include<stdio.h>
void main()
{
int i=1;
while(i<2)
{
int j =1;
while(j<=10)
{
printf("%d x %d = %d\n",i ,j,(i*j));
j=j + 1;
}
i=i + 1;
}
}
输出
1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 1 x 5 = 5 1 x 6 = 6 1 x 7 = 7 1 x 8 = 8 1 x 9 = 9 1 x 10 = 10
C 语言中另一种循环是 do-while 循环,它与 while 类似,只有一个例外,即条件评估只在执行 do-while 主体内的语句之后进行。因此,do-while 循环也被称为后置条件循环。do-while 循环主要用于我们需要至少执行一次主体内语句的地方,比如菜单驱动的程序。
为了更清楚地理解,让我们考虑一个电视遥控器的例子,你有多种选择(菜单驱动)来看电视:如果你想在电视上浏览频道,你必须至少看 1 个频道,当你感到无聊时,你可以切换到其他频道。
do{
//body of do-while loop
} while(condition);
请看下面的代码,展示了一个 do-while 循环的例子。
#include<stdio.h>
#include
void main()
{
int channel,cursor;
char c;
do{
printf("\n1.TLC\n2.CNN\n3.GEO\n4.Exit\n");
scanf("%d",&choice);
switch(channel)
{
case 1 :
printf("I am Watching TLC\n");
break;
case 2:
printf("I am watching CNN\n");
break;
case 3:
printf("I am watching GEO\n");
break;
case 4:
exit(0);
break;
default:
printf("Watching default channel - BBC");
}
printf(" \n Do you want to surf another channel?");
scanf("%d",&cursor);
scanf("%c",&c);
}while(c=='y');
}
输出
1.TLC 2.CNN 3.GEO 4.Exit 2 I am watching CNN Do you want to surf another channel?y 1.TLC 2.CNN 3.GEO 4.Exit 1 I am Watching TLC Do you want to surf another channel?n
像其他两种循环一样,do-while 循环也支持嵌套
do
{
do
{
// body of inner do-while loop.
} while(condition);
// body of outer do-while loop.
} while(condition);
请看下面的例子,使用嵌套的 do-while 循环打印乘法表。
#include<stdio.h>
void main()
{
int i =1;
int j=1;
do
{
do
{
printf("%d x %d = %d\n",i ,j,(i*j));
j=j+1;
}while(j<=10);
i=i+1;
}while(i<2);
}
输出
1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 1 x 5 = 5 1 x 6 = 6 1 x 7 = 7 1 x 8 = 8 1 x 9 = 9 1 x 10 = 10
在 C 语言中,无限循环是一种永远执行而不会终止的循环结构。这种类型的循环会产生无限数量的输出,它也被称为无限循环或无尽循环。
在用户需要应用程序无限期执行,直到用户需要手动退出应用程序的情况下,无限循环非常有用。使用无限循环的日常应用程序包括所有操作系统、所有服务器和游戏。所有这些应用程序都会持续工作,直到用户关闭或退出。我们可以使用所有三种循环来定义无限循环:for 循环、while 循环或 do-while 循环。此外,你将在下一个教程中学到的 goto 语句也可以用来创建无限循环。
这是一个简单的例子
#include<stdio.h>
void main()
{
int i;
for(i=1;;++i)
{
printf("%d\n",(learnetutorials\t);
}
}
for (i=1;i++)
这里 I 的值会像 1,2,3... 这样变化。但永远不会小于 '0',从而导致无限循环。输出将会是这样的
