C语言有3种循环,分别是for、while和do while循环。
while循环
while 的通用形式是:
while(条件)
语句
语句部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。条件部分一般都使用关系表达式,用于值之间的比较,可以使用任何表达式。如果条件为真,执行语句部分,然后再次判断条件是否为真,在为假之前,循环的判断和执行一直重复进行。每次循环都被称为一次迭代。
在构建while循环时,必须让测试表达式的值有变化,最终要为假,否则循环就不会终止。
在测试条件时,通常要对变量进行初始化
int n=0;
while(n<5)
{
n++;
}
在使用while的时候,只有在测试条件后面的简单语句或复合语句才是循环部分。
int n=0;
while(n<3)
printf("n is %d\n",n);
n++;
上面的例子就构成了无限循环,因为读取不到n++,n的值一直为0.
另外,看下面这行代码,
int n=3;
while(n)
{
printf("%d",n);
n--;
}
会循环几次呢?这里的测试条件其实是一个简写,其为n!=0。这是现在常用发写法。
前面学过scanf()函数,scanf()函数有这么一个特点,scanf成功读取一个值会返回1。可以利用scanf()函数来控制while循环。这个特性经常被用来做多组循环。
while(scanf("%d",&n)!=EOF)
{
}
EOF通常定义在stdio.h中,表示文字流的结尾。
for循环
for循环其实和while循环差不多,只不过for循环把初始化,测试条件和更新条件放在了一起,例如
for(i=0;i<5;i++)
每个部分用分号隔开。初始化只会在循环开始时执行一次,之后的循环中都不会在执行。初始化时可以对多个变量进行初始化,用逗号隔开。
for(i=0,n=0;i<5;i++)
第3个表达式可以使用任意合法的表达式,在每次迭代后都会更新该表达式的值。
另外,for循环可以省略一个或多个表达式,但是不能省略分号,只要在循环包含能结束循环的语句即可,如
for(n=3;arr<=25;)
{
arr*=n;
printf("%d",arr);
}
do while
其实和while循环差不多,只不过do while循环至少执行一次语句,它的通用结构为:
do
{
语句
}while(条件)
至少执行循环体中的内容一次,然后在判断条件是否为真,为真接着循环。
嵌套循环
嵌套循环指在一个循环内包含令一个循环,常用于按行和列显示数据,也就是说,一个循环处理一行中的所有列,另一个循环处理所有的行。只不过每次外层循环迭代之前,內层循环都执行玩所有的循环。
#include <stdio.h>
int main(void)
{
int arr[2][3]={{1,2,3},{4,5,6}};
int a,b;
for(a=0;a<2;a++) //a指向数组中的行
{ for(b=0;b<3;b++) //b指向数组中的列
printf("%d\n",arr[a][b]);
}
return 0;
}
以上为个人知识总结