循环语句简介
- 在现实中有许多问题都需要有规律地重复某些操作,这些操作在计算机中表现为在满足某些条件下,某些语句会被重复执行,这就是循环。
比如:你想打印100遍“hello world”,需要用到循环语句,且条件为打印100遍就可以,这会很方便。
文章目录
一、while循环语句
- 一般结构
while(表达式)
{
语句体;
}
- 表达式:为循环的条件。可以是C语言中任意合法的表达式,一般为关系或逻辑表达式。
- 语句体:即为重复执行的操作,也称循环体。如果有多个语句需要“ { } ”括起来,以复合语句形式出现。
- 其特点:是先判断条件后执行语句体。
- while循环体内一定有改变循环条件的语句,使循环趋于结束,否则会形成死循环。
1.while语句的执行过程
首先计算表达式的值,如果表达式的值为非0(真),则执行循环体语句,然后再重新计算表达式的值,再次判断值是否为真,如为真,则继续这要执行下去,知道表达式的值为0(假),则跳出循环结构。
2.代码实现
1+2+3+4+…+99+100=?
int main()
{
int n=0;
int k=0;
while(n<100)
{
k += (++n);
}
printf("%d ",k);
return 0;
}//输出 5050
二、do…while循环
- 一般结构
do
{
语句体;
}while(表达式);
- 表达式:为循环的条件。可以是C语言中任意合法的表达式,一般为关系或逻辑表达式。
- 语句体:即为重复执行的操作,也称循环体。如果有多个语句需要“ { } ”括起来,以复合语句形式出现。
- 其特点:先执行一次语句体然后进行判断,所以语句体至少会执行一次。
- do…while 最后的那个分号“ :”不能省;
1.do…while语句的执行过程
首先执行do后面的语句体,然后计算while后面表达式的值,若表达式的值为非0(真),则继续执行循环语句,如此循环往复,直到表达式的值为0(假),则退出循环结构。
- 注意:
- 1)do…while循环语句的特点是先执行循环体后判断条件,所以不管条件成不成立,都会执行一次程序,这是其与while循环语句本质上的差距。
- 2)不论循环体是一个语句还是多个语句,最好都用“{}”括起来。
2.代码实现
1+2+3+4+…+99+100=?
int main()
{
int i = 0;
int k = 0;
do
{
k += ++i;
} while (i<100);
printf("%d ", k);
return 0;
}//结果输出 5050
三、for循环语句
- 一般结构
for(表达式1;表达式2;表达式3)
{
语句体;
}
- 表达式1:一般用来给循环变量赋初值,所以常为赋值表达式,指定了循环的地点;如果在for循环外给循环变量赋初值,则可以省略该表达式。
- 表达式2: 表示循环条件,决定循环是否继续或者结束,一般为关系或逻辑表达式;
- 表达式3:一般用来修饰循环变量的值,控制变量每一次循环按照生命方式变化,从而改变表达式2的真假性(即改变循环的条件),一般为赋值语句。
- 注:三个表达式之间用分号“;”隔开,不能使用其他符号;
1.for循环语句的执行过程
1.先执行表达式1
2.再计算表达式2,若为非0(真),则执行循环体;若为0(假),则结束循环。
3.然后计算表达式3,然后重复执行第二步
2.代码实现
1+2+3+4+…+99+100=?
int main()
{
int i = 0;
int j = 0;
for (i = 0; i <= 100; i++)
{
j += i;
}
printf("%d", j);
return 0;
}//输出 5050
3.for循环语句的几种形式
- for语句中的3个表达式都可以根据需求省略,但是分号不能省略。
在这里举一个例子:
如果将三个表达式都省略;
int main()
{
int i = 0 ;
int j = 0;
for (;;)
{
j += i;
i++;
}
printf("%d ", j);
return 0;
}// 死循环
- 三个表达式都省略,无初始值,不会判断条件,循环变量不变,会死循环。
三、循环的嵌套
简介
- 在一层循环体内包含另一个循环语句,当循环嵌套时,外层循环执行一次,则内层循环从头到尾执行一遍。
代码实现
- 99乘法表
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%-2d ", i, j, i * j);
}
printf("\n");
}
return 0;
}
四、break、continue和goto语句
1、break一般格式:
break语句:break;,用于强制结束循环,转向执行循环语句的下一条语句;
int main()
{
int i=0;
for(i=0;i<=10;i++)
{
printf("haha");
break;
}
printf("hehe");
return 0
}//则这个循环只会打印一次haha;之后会一遇到break跳出循环,执行打印hehe;
2.continue语句一般格式
- continue语句:continue; 结束本次循环。对于while和do…while循环,跳过循环体其余语句,转向循环终止条件的判断;对于for循环,跳过循环体其余语句,转向循环变量改变量表达式的计算。
3.goto语句和标号语句
- goto语句格式:goto<语句标号>;
注:
-
goto语句是无条件转移语句,程序执行到goto语句时,无条件地转移到<语句标号>所指定的语句并执行。
-
<语句标号>是一个标识符,应按标识符的命名规则来命名。
标号语句的格式:
语句标号: -
标号语句放在某一句行的前面,语句标号后加冒号( : ) 。
-
语句标号起标识语句的作用,与goto语句配合使用,是goto语句的转移目标。
int main()
{
int i,j = 0;
int a[3][3] = {
1,2,3,4,5,6,7,8,9 };
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
if (a[i][j] == 6)
{
goto find;
}
}
}
find:
printf("%d %d\n", i, j);
getchar();
return 0;
}
- goto语句可以跳到指定位置处执行新的程序,经常用来跳出多重循环。
小结
- 注意break和continue的区分,break是结束本层循环,continue是结束本次循环。
- while和do…while循环语句在应用时注意后者至少执行一次循环。