C语言语句的第二个版块——循环语句来了,友友们让我们一起来学习。
三 循环语句
循环语句包括while循环、for循环、 do-while循环。其中do-while循环用的最少。
3.1 while循环
while循环的语法:
代码展示:打印1-10
1. #include <stdio.h> 2. int main() 3. { 4. int i = 1; 5. while (i <= 10) 6. { 7. printf("%d ", i); 8. i++; 9. } 10. return 0; 11. }
while循环步骤:
判断i=1是否<=10,成立后进入while循环,打印i,i再加1赋值为2,此时i=2,判断i=2是否<=10,成立后进入while循环……直到i=11时,判断i是否<=10,不成立,出while循环,return 0,结束
3.1.1 while循环中的break和continue
break 介绍
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. while (i <= 10) 6. { 7. i++; 8. if (i == 5) 9. break; 10. printf("%d ", i); 11. } 12. return 0; 13. }
这个代码只能打印出1-4,当i=5的时候,进入break,break的作用是,终止循环。
总结:
break在while循环中的作用是:
只要循环中遇到break,就停止后期的所有循环,直接终止循环。所以while中的循环用于永久终止循环。
continue介绍
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. while (i < 10) 6. { 7. i++; 8. if (i == 5) 9. continue; 10. printf("%d ", i); 11. } 12. return 0; 13. }
这个代码可以打印1-4 6-10,i=5的时候,进入continue,continue的作用是中止本次循环,进入下一个while循环。
总结:
while循环中continue的作用是:
continue用于终止本次循环,也就是本次循环中continue后的代码不会执行,而是直接跳到while语句判断部分,进行下一次循环的入口判断。
小贴士
(1)getchar和putchar是针对字符的scanf和printf。int ch = getchar();putchar(ch) 相当于scanf("%s",&ch);printf("%s", ch) 结束^z
(2)数组名本来就是地址,用scanf时,不用取地址符号&
3.2 for循环
for循环是我们用的最频繁的一种循环。
3.2.1 语法
for循环语法:
for循环执行过程:表达式1——表达式2——循环语句——表达式3
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. for (i = 1; i <= 10; i++) 6. { 7. printf("%d", i); 8. } 9. return 0; 10. }
打印结果:12345678910
代码执行过程:i赋值为0,进入for循环,执行表达式1,i赋值为1,执行表达式2,判断i=1是否小于等于10,成立,进入循环语句,输出1,执行表达式3,i加一赋值为2,进入表达式2,进行判断……直到i赋值为11,判断不成立,出for循环,return 0,结束。
3.2.2 for 循环中的break和continue
break
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. for (i = 1; i <= 10; i++) 6. { 7. if (5 == i) 8. break; 9. printf("%d ", i); 10. }
打印结果:1 2 3 4
当代码执行到break时,跳出for循环。
continue
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 1; 5. for (i = 1; i <= 10; i++) 6. { 7. if (5 == i) 8. continue; 9. printf("%d ", i); 10. } 11. return 0; 12. }
打印结果:1 2 3 4 6 7 8 9 10
当i=5时,continue,跳过循环部分剩下的代码,也就是printf("%d ", i),去执行表达式3,i++,让i赋值为6,然后去执行剩下的操作。
3.2.3 for语句的循环控制变量
建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. for (i = 0; i < 10; i++) 6. { 7. printf("hehe\n"); 8. } 9. return 0; 10. }
运行结果:
这个代码中的10,具有一定的意义。10个hehe。
3.2.4 一些for循环的变种
代码1展示:
1. #include <stdio.h> 2. int main() 3. { 4. for (;;) 5. { 6. printf("hehe\n"); 7. } 8. return 0; 9. }
运行结果:hehe死循环
注意:(1)语句的初始化、判断、调整三个部分都可以省略。当然, 如果条件允许的话,不要省略这三个部分。 (2)中间的判断部分如果省略,意味着判断恒为真,就构成死循环了。 代码2展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. int j = 0; 6. for (i = 0; i < 3; i++) 7. { 8. for (j = 0; j < 3; j++) 9. { 10. printf("hehe\n"); 11. } 12. } 13. return 0; 14. }
打印结果:九个hehe
代码分析:(1)首先我们先分析第二个for循环,j=0时进入循环打印一个hehe,j=1时又进入一次,j=2时又进入一次,j=3时不小于3,出第二个for循环。则第二个for循环可以打印出3个hehe (2)把第二个for循环看做一个整体W,可以知道第一个for循环,可以打印3次W,那么就是9个hehe.
代码3展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. int j = 0; 6. for (; i < 3; i++) 7. { 8. for (; j < 3; j++) 9. { 10. printf("hehe\n"); 11. } 12. } 13. return 0; 14. }
运行结果:三个hehe
代码分析:i=0时进入循环,j=0,会打印3个hehe,循环结束后j=3,i=1和i=2进入时,j=3,无法进入第二个循环,所以就打印出三个hehe。
代码4展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. int j = 0; 6. for (i = 0, j = 0; j = 0; i++, j++) 7. { 8. printf("hehe\n"); 9. } 10. return 0; 11. }
代码结果:(什么都没有)
代码分析:j=0,为判断语句,0为假,所以for循环不会执行。
3.3 do…while()循环
3.3.1 do while()循环
do ..while()语句语法:
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 1; 5. do 6. { 7. printf("%d ", i); 8. i++; 9. } while (i <= 10); 10. }
打印结果:1 2 3 4 5 6 7 8 9 10
代码分析:i=1进入do while循环,先打印1,再i再加一,赋值为2,然后i=2与10比较,成立,继续打印。
do while循环至少执行一次,使用场景有限,不经常使用。
3.3.2 do while中的break和continue
break
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 1; 5. do 6. { 7. if (5 == i) 8. break; 9. printf("%d ", i); 10. i++; 11. } while (i <= 10); 12. return 0; 13. }
打印结果:1 2 3 4
continue
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 1; 5. do 6. { 7. if (5 == i) 8. continue; 9. printf("%d ", i); 10. i++; 11. } while (i <= 10); 12. return 0; 13. }
打印结果:1 2 3 4 死循环
循环语句就到此结束了,希望友友们可以提出宝贵的的意见。