无偿分享学习资料,需要的小伙伴评论区或私信dd。。。
无偿分享学习资料,需要的小伙伴评论区或私信dd。。。
无偿分享学习资料,需要的小伙伴评论区或私信dd。。。
完整资料如下:纯干货、纯干货、纯干货!!!
关注专栏:<后续持续更新>
目录
循环结构语句
分类:while循环语句、do-while循环语句、for循环语句、goto语句。
-
所有循环语句与选择语句相同,若后面的循环体是一个复合语句则需要加上{}括起来。
-
一般情况下三种循环语句可以相互替换(只有while与for无条件等价)
-
只有for循环可以缺省表达式(while与do-while都不可以)
1.while循环语句
格式:
while(表达式){ //只要条件表达式为真就执行下面的循环体
循环体;
}
-
while语句的特点是先判断条件表达式、后执行循环体语句(这点与do-while区别)
-
while后面的表达式称为循环条件表达式(24年真题)
-
while配合getchar赋值,只要第一次满足条件,那么让你多次输入直到不满足条件为止
char ch; while((ch=getchar())!='9');//只要不等于9,那么执行空语句,返回去再判断,判断又要进行输入 printf("ok");
2.do-while循环语句
格式:
do{
循环体;//先无条件执行一次,在判断循环条件,为真则继续执行
}
while(表达式);
-
do-while循环是先无条件执行一次循环体,再去判断循环条件(这点与while不同),即do-while至少执行一次循环体
-
do后面不允许加分号,while后面必须加分号
3.for循环语句
格式:
for(表达式1;表达式2;表达式3){
循环体;
}
//表达式1:设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值
//表达式2:循环判断条件(循环条件表达式)
//表达式3:循环变量的增值或减值(使循环趋于结束的条件)
-
for循环不仅可以解决循环未知的问题,还特别适合解决循环次数未知的问题,可完全代替while语句,即两者无条件等价。
-
表达式1还可以是与循环无关的其他表达式,同时允许在表达式1内定义变量并初始化(此变量作用域只限于for语句),如果定义多个变量,那么多个变量只能是同一数据类型
for(sum=0;i<100;i++){sum+=i}//与循环无关的变量 for(int sum=0;i<100;i++){sum+=i}//定义并初始化 for(int i=1,sum=0;i<100;i++);//i与sum都是int类型
-
表达式2省略时循环条件一直为真,导致for循环无终止死循环(可以在循环体中配合break判定)
-
表达式3省略需要在循环体内设置趋于结束的循环条件(即表达式3与循环体内的内容可以调换位置。
-
当三个表达式都省略时,for循环会陷入死循环
for(;;){ printf("ok");//无终止输出"ok" }
-
三个表达式都可以是逗号表达式。
for(int i=0,sum=1;i<100,sum<200;i++,sum++){ printf("ok"); } ⚠️注意:此时表达式2以最后一个终止条件为准。
-
三个循环语句中,只有for循环可以缺省循环条件表达式。
-
表达式1一般在for语句之前定义并初始化,因为这样可以在for语句之外拿到循环变量的值。
int i=0; for(;i<=10;i++){ printf("ok\n"); } ⚠️注意:循环结束后,循环变量等于循环结束的终止值+1,即这里的i最后等于11。
-
表达式3可以与循环体互换位置,作用效果相同。
for(int i=0;i<10;i++){ printf("%d\n",i); } 等价于: for(int i=0;i<10;printf("%d\n",i),i++);
4.goto语句
格式:goto 语句标号;
loop:if(i<100){
sum+=i;
i++;
goto loop;//在执行到goto语句时,跳转到上面语句标号的位置执行
}
-
goto 语句 与**语句标号:**必须在同一函数内(即在同一函数内,可以跳转到任何地方)
-
语句标号:不允许放在初始化语句和声明语句前面
loop:int i 和 loop int i=1都是错误的
-
goto语句通常与if语句连用以构成循环的目的。
loop:if(i<100){ sum+=i; i++; goto loop;//在执行到goto语句时,跳转到上面语句标号的位置执行 }
循环结构的嵌套
定义:在一个循环语句中又包含另一个完整的循环语句称为循环嵌套
-
三种循环语句可以相互嵌套。
-
内循环使用break与continue对外循环没有影响。
三种循环的比较
-
一般情况下,3种循环可以相互替换。
-
while和do-while的循环体中必须指定循环趋于结束的语句,而for可以放在表达式3也可以放在循环体中。
-
while和do-while的循环初始条件操作应该放在while和do-while之前完成。
break语句
作用:终止循环,跳出循环体(还可以跳出switch分支)
-
break只能用于循环语句与switch语句之中,不能单独使用。(如果出现在其他语句中,说明其他语句在循环或switch中)
int a=12; for(int i=0;i<a;i++){ if(i==5)break;//出现在if语句中,原因if在for语句中 }
continue语句
作用:终止"本次"循环
-
continue只能出现在循环体中(如果出现在其他语句中,说明其他语句在循环中)
int a=12; for(int i=0;i<a;i++){ switch(i){ case 12:break; case 10:continue; } }
break与continue的区别:
break是结束当前循环,所以在嵌套循环中,内循环遇到一个break,是结束整个内循环,但是没有结束外循环
continue是结束本次循环,所以在嵌套循环中,内循环遇到一个continue,是结束内循环这一次的循环条件,直接进行到内循环下一个
循环条件