C语言入门篇(四)

以你之姓@ 2023-10-13 08:34 168阅读 0赞

前言
  有的时候,我们可能需要多次执行同一块代码。
  一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
  编程语言提供了更为复杂执行路径的多种控制结构。
  循环语句则允许我们多次执行一个语句或语句组。

循环语句

    1. for循环
    • 1.1 语法
    • 1.2 break和continue在for循环中
    • 1.3 for语句的循环控制变量
    • 1.4 一些for循环的变种
    • 1.5 练习
    1. while循环
    • 2.1 语法
    • 2.2 break介绍
    • 2.3 continue介绍
    • 2.4 练习
    1. do…while循环
    • 3.1 do语句的语法
    • 3.2 do语句的特点
    • 3.3 do…while循环中的break和continue
    1. 练习
  • 结束语

1. for循环

1.1 语法

  1. for(表达式1;表达式2;表达式3)
  2. 循环语句;

表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。

如果判断部分省略,意味着判断恒真。

实例:使用for循环在屏幕上打印1-10的数字

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i;
  5. for (i = 1; i <= 10; i++)
  6. {
  7. printf("%d ", i);
  8. }
  9. return 0;
  10. }

for循环的执行流程图:
       在这里插入图片描述
for语句只控制一条语句,控制多条语句要加{}。

1.2 break和continue在for循环中

  1. //break 代码实例
  2. #include<stdio.h>
  3. int main()
  4. {
  5. int i;
  6. for (i = 1; i <= 10; i++)
  7. {
  8. if (i == 9)
  9. break;
  10. printf("%d ", i);
  11. }
  12. return 0;
  13. }

输出结果:
在这里插入图片描述
为什么到8就结束了?

break在for循环中的作用:

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以:for中的break是用于永久终止循环的。

  1. //continue 代码示例
  2. #include<stdio.h>
  3. int main()
  4. {
  5. int i;
  6. for (i = 1; i <= 10; i++)
  7. {
  8. if (i == 9)
  9. continue;
  10. printf("%d ", i);
  11. }
  12. return 0;
  13. }

这段代码的输出结果又会是什么?
在这里插入图片描述
continue在for循环中的作用:

continue是用于终止本次循坏的,也就是本次循环中continue后边的优码不会再执行,
而是直接跳转到for语句的判断部分。进行下一次循环的入口判断。

1.3 for语句的循环控制变量

  1. //前闭后开
  2. int i=0;
  3. for(i=1;i<11;i++)
  4. {
  5. }
  6. //两边都是闭区间
  7. int i=0;
  8. for(i=1;i<=10;i++)
  9. {
  10. }

1.不可在for循环体内修改循环变量,防止for循环失去控制;
2.建议for语句的循环控制变量的取值采用”前闭后开区间写法。

1.4 一些for循环的变种

  1. //代码1
  2. for(;;)
  3. {
  4. printf("hh\n");//无限循环打印hh
  5. }
  6. //for循环中的初始化部分、判断部分、调整部分可以省略。
  7. //初始化和调整部分的省略就是啥都不做
  8. //判断部分省略了,意味着判断是恒为真的
  9. //建议不要随便省略
  10. //代码2
  11. int i=0;
  12. int j=0;
  13. for(i=0;i<10;i++)
  14. {
  15. for(j=0;j<10;j++);
  16. {
  17. printf("hh\n");//打印10个hh
  18. }
  19. }
  20. //代码3
  21. int i=0;
  22. int j=0;
  23. for(;i<10;i++)
  24. {
  25. for(;j<10;j++)
  26. {
  27. printf("hh\n");//同代码2
  28. }
  29. }
  30. //代码4-使用多于一个变量控制循环
  31. int x, y;
  32. for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
  33. {
  34. printf("hh\n");//打印两个hh
  35. }

下面这段代码会打印多少个hh?

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i = 0;
  5. int j = 0;
  6. //i=0 1
  7. for (i=0; i < 4; i++)
  8. {
  9. for (j=0; j < 4; j++)
  10. {
  11. printf("hehe\n");
  12. }
  13. }
  14. return 0;
  15. }

1.5 练习

请问循环要循环多少次?

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i = 0;
  5. int k = 0;
  6. for (i = 0, k = 0; k = 0; i++, k++)
  7. {
  8. k++;
  9. printf("hh");
  10. }
  11. return 0;
  12. }

for循环可以嵌套使用:
在这里插入图片描述

2. while循环

2.1 语法

  1. while(表达式)
  2. 循环结构;

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. }

2.2 break介绍

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i = 1;
  5. while (i <= 10)
  6. {
  7. if (i == 5)
  8. break;//(跳出)终止循环
  9. printf("%d ", i);
  10. i = i + 1;//i++;
  11. }
  12. return 0;
  13. }

在这里插入图片描述

2.3 continue介绍

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i = 1;
  5. while (i <= 10)
  6. {
  7. i = i + 1;
  8. if (i == 5)
  9. continue;//跳过本次循环continue后边的代码,直接去while循环的判断部分 printf("%d ", n);
  10. printf("%d ", i);
  11. }
  12. return 0;
  13. }

在这里插入图片描述

我们发现在while循环中也可以出现break和continue,他们的意义和在for循环中是一样的。
但是还是有一些差异。

2.4 练习

用while循环打印1-100以内的奇数

  1. int main()
  2. {
  3. int i = 1;
  4. while (i <= 100)
  5. {
  6. if(i % 2 == 1)//判断i是奇数的话,就打印i
  7. printf("%d ", i);
  8. ++i;
  9. }
  10. return 0;
  11. }
  12. //打印数字字符,跳过其他字符
  13. #include <stdio.h>
  14. int main()
  15. {
  16. char ch = '\0';
  17. while ((ch = getchar()) != EOF)
  18. {
  19. if (ch < '0' || ch > '9')
  20. continue;
  21. putchar(ch);
  22. }
  23. return 0;
  24. }

补充:

  1. while ((ch = getchar()) != EOF)
  2. {
  3. putchar(ch);
  4. }
  5. //getchar()--接收字符
  6. //putchar()--打印字符
  7. //EOF -- end of file 文件结束标志
  8. //在函数读取失败的时候返回了EOF
  9. //scanf函数读取成功,返回的是读取到的数据的个数,读取失败返回EOF
  10. //而getchar 读取成功返回字符的ASCII码值,读取失败返回EOF

3. do…while循环

3.1 do语句的语法

  1. do
  2. 循环语句;
  3. while(表达式);

do…while语句执行的流程:
         在这里插入图片描述

3.2 do语句的特点

实例:使用do…while循环在屏幕上打印1-10的数字

  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. return 0;
  11. }

循环至少执行一次,使用场景有限,所以不经常使用。

3.3 do…while循环中的break和continue

  1. //break
  2. #include<stdio.h>
  3. int main()
  4. {
  5. int i = 1;
  6. do
  7. {
  8. if (5 == i)
  9. break;
  10. printf("%d ", i);//1 2 3 4
  11. i++;
  12. } while (i<=10);
  13. return 0;
  14. }

在这里插入图片描述

  1. //continue
  2. #include<stdio.h>
  3. int main()
  4. {
  5. int i = 1;
  6. do
  7. {
  8. if (5 == i)
  9. continue;
  10. printf("%d ", i);//1 2 3 4 _
  11. i++;
  12. } while (i<=10);
  13. return 0;
  14. }

在这里插入图片描述

4. 练习

1.计算n的阶乘
2.计算1!+2!+…+10!

第一题:

  1. //for循环
  2. //5!=5*4*3*2*1
  3. //4!=4*3*2*1
  4. //3!=3*2*1
  5. #include<stdio.h>
  6. int main()
  7. {
  8. int n;
  9. int i;
  10. int temp = 1;
  11. scanf("%d", &n);//输入
  12. for (i = 1; i <= n; i++)
  13. {
  14. temp = temp * i;
  15. }
  16. printf("%d\n", temp);
  17. return 0;
  18. }
  19. //while循环
  20. #include<stdio.h>
  21. int main()
  22. {
  23. int n;
  24. int i=1;
  25. int temp=1;
  26. scanf("%d", &n);//输入
  27. while (i <= n)
  28. {
  29. temp = temp * i;
  30. i++;
  31. }
  32. printf("%d\n", temp);
  33. return 0;
  34. }

第二题:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i;
  5. int temp = 1;
  6. int sum = 0;
  7. for (i = 1; i <= 10; i++)
  8. {
  9. temp *= i;//求每个数字的阶乘
  10. sum += temp;//求和,相当于:sum=sum+temp;
  11. }
  12. printf("%d\n", sum);
  13. return 0;
  14. }

结束语

循环语句到这里就结束啦!想要完全的掌握,还需要不断地练习。
  积土而为山,积水而为海。
  我们下一篇文章再见。
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,168人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言入门(五)

    现实生活中,库函数并不能解决所有问题,于是就有了自定义函数。自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。statemen...

    相关 语言入门

    > 前言 >   有的时候,我们可能需要多次执行同一块代码。 >   一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 >  

    相关 C语言入门(一)

    > 前言 >   欢迎各位小伙伴,这一篇,只是为了让我们对C语言有一个大概的认识,每个知识点并不会讲的很深,之后我也会持续更新博客,对这些知识进行拓宽,进行更细致的描述。