1.使用while语句实现循环
while循环语句的一般形式:
while(循环条件表达式)语句
只要当循环条件的表达式为真(给定条件成立),就执行循环体语句
while循环的重要特点是:先判断条件表达式,后执行循环体(当型循环)
注:while循环可以一次都不执行
流程图表达
经典实例:1+2+3+4+..._n的累加
#include<stdio.h>
int main(){
while(1)
{
int sum = 0 , i = 1 ;
int n = 0;
printf("计算1+2+3+...+n(输入n:)\n");
scanf("%hd",&n);
while(i <= n)
{
//第一次sum=0+1,第二次sum=1+2....
sum+=i;
//计数器(循环次数)
i++;
}
printf("1+2+3+...+n的值为:%d\n",sum);
}
return 0;
}
补充说明:
1.循环体如果包含一个以上语句,就应该用花括号括起来。
2.注意给变量赋初值,否则其值是不可预测的。
3.循环体中一定要有使循环趋于结束的语句,如果没有就会构成死循环。
2.使用do while 语句实现循环
do while循环语句的一般形式:
do
语句
while(表达式);
do while 语句特点:先无条件执行一次循环,然后判断循环条件(while后表达式)是否成立,成立则执行循环
注:1.do while 循环至少执行一次
2.while(表达式)后面一定要加;
流程图表达
补充说明:
循环体至少被执行一次是do while循环语句的一个优点,他至少被执行一次,即使循环条件不成立,其在某些情况下非常有用,像是要进行一系列初始化操作后再进入循环的代码如用户输入密码直到输入成功循环结束
3.使用for语句实现循环
for循环语句的一般形式 :
for(表达式1;表达式2;表达式3)
语句
表达式1:设置初始条件,只会执行一次。可以为零个,一个,或者多个变量设置初值。
表达式2:循环条件表达式,用于判定是否继续循环,在每次执行前先执行此表达式,来决定是否继续循环。
表达式3:循环的调整,例如循环变量的增值,在执行完循环体后执行此表达式。
注:1.表达式2一般是关系或逻辑表达式,也可以是数字或字符表达式,只要值为非0就执行次循环
2.允许在表达式1中定义变量并赋初值
补充说明:
1.一定尽量避免在循环体内修改循环控制变量,避免影响循环次数,导致达不到预期的效果
2.尽量减少for循环的嵌套层数,一般情况下不会超过三层,层数过多不仅降低代码的可读性还会使代码运行效率下降,若超过三层建议重新设计循环。
实例:计算1!+2!+...+10!
#include<stdio.h>
int main (){
int i = 0;
int ret = 1;
int sum = 0;
for (i=1 ; i <= 10 ; i++)
{
ret = ret * i;
sum = sum + ret;
}
printf("累加和结果为:%d\n",sum);
return 0 ;
}
4.三种循环的比较
1.3中循环都可以用来处理同一个问题,一般情况下可以互相替代。
2.while和do while循环中,只在while后面的括号中指定循环条件,因此为了使循环能够正常结束,
应该在循环体中包含使循环趋于结束的语句。(如i++,i--等)
3.while和do while循环中,循环变量的初始化应该在循环语句之前完成。for语句可以在表达式1中完成循环变量的初始化。
4.for循环不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定只给出结束条件的情况。
5.3中循环都可以用break跳出循环,用continue结束本次循环.
5.改变循环执行状态
1.使用break语句来提前终止循环
一般形式:
break;
其作用是使流程跳到循环体之外,接着执行循环体下面的语句。
注:break语句只能用于循环语句和switch语句之中,而不能单独使用。
2.使用continue语句来提前结束本次循环
一般形式
continue;
其作用为结束本次循环,即跳过循环体当中下面尚未执行的语句。
3.区别
continue语句只用于结束本次循环,而不是种终止个循环。而break语句则是结束整个循环过程,不在判断执行循环的条件是否成立。
例如
#include<stdio.h>
int main(){
int i = 1;
while(i <= 100)
{
if(i == 3)
break;/continue;
printf("%d\n",i);
i++;
}
return 0;
}
如果是break只输出1 2
如果是continue则输出1 2 4~100