前言

C语言中的循环结构时,for循环是最常用的一种。它允许重复执行一段代码,直到满足特定条件为止。

本文将详细介绍for循环的用法,并提供相关的可编译运行的C代码示例。

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、for循环的语法

  1. for (初始化表达式; 循环条件; 循环后操作) {
  2. // 循环体代码
  3. }
  • 初始化表达式在循环开始前执行,用于初始化循环计数器或其他变量。

  • 循环条件是一个布尔表达式,如果为真,则继续执行循环体;如果为假,则退出循环。

  • 循环后操作在每次循环迭代之后执行,通常用于更新循环计数器或其他相关变量。

三、for循环与while循环的区别

for循环while循环在功能上是等价的,但语法上有一些区别。主要区别如下:

  • for循环更适用于已知循环次数的情况,而while循环更适用于循环次数未知的情况。
  • for循环在一个语句中包含了循环的初始化、条件和循环后操作,更紧凑、简洁,适用于循环控制变量的初始化和更新。
  • while循环则需要在循环体外单独设置循环变量的初始化,循环条件在循环体内部判断,循环变量的更新也需要手动控制

四、for循环的灵活性

1、内置表达式

for循环的语法中,每个部分都可以是一个表达式。这意味着你可以在初始化、循环条件和循环后操作中使用任何合法的表达式。例如:

  1. for (int i = 0; i < 5; i++) {
  2. // 循环体代码
  3. }

2、外置表达式

for循环的各个部分也可以在循环外部定义,并在循环语句中使用。这样可以更灵活地控制循环条件和循环后操作。例如:

  1. int i;
  2. for (i = 0; i < 5; i++) {
  3. // 循环体代码
  4. }

3、省略循环条件

for循环中,如果省略了循环条件部分,将会创建一个无限循环。这种情况下,循环将一直执行,直到使用break语句或其他方式跳出循环。例如:

  1. for (;;) {
  2. // 循环体代码
  3. if (condition) {
  4. break; // 在某个条件下跳出循环
  5. }
  6. }

4、省略循环操作

for循环中,循环后操作部分也可以省略。这种情况下,需要在循环体内部手动更新循环计数器或其他相关变量。例如:

  1. int i = 0;
  2. for (; i < 5;) {
  3. // 循环体代码
  4. i++; // 手动更新循环计数器
  5. }

需要注意的是,灵活性应该与代码的可读性和维护性相平衡。选择合适的方式取决于具体的需求和代码结构。

最常见的情况是使用内置的for循环语法,其中包含初始化、循环条件和循环后操作,这样可以使代码更加清晰易懂。

五、for循环的应用

示例 1: 遍历数组

使用for循环可以轻松遍历数组或列表中的元素,并对它们进行操作或处理。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int numbers[] = {1, 2, 3, 4, 5};
  5. int sum = 0;
  6. for (int i = 0; i < 5; i++) {
  7. sum += numbers[i];
  8. }
  9. printf("Sum: %d\n", sum);
  10. return 0;
  11. }
  • 运行结果

示例 2: 打印图形

通过嵌套for循环可以打印各种形状的图案,例如矩形、三角形等。

  1. #include <stdio.h>
  2. int main() {
  3. int rows = 5; // 三角形的行数
  4. for (int i = 1; i <= rows; i++) {
  5. // 打印每行的空格
  6. for (int j = 1; j <= rows - i; j++) {
  7. printf(" ");
  8. }
  9. // 打印每行的星号和间隔空格
  10. for (int j = 1; j <= 2 * i - 1; j++) {
  11. if (j % 2 == 0) {
  12. printf(" ");
  13. } else {
  14. printf("*");
  15. }
  16. }
  17. printf("\n");
  18. }
  19. return 0;
  20. }
  • 运行结果

小结

通过这篇文章,我们学会了

1、for循环的语法

2、for循环的灵活表达方式

3、for循环的基本应用

欢迎各位 点赞 收藏 评论,如有错误请留言指正,非常感谢!

逍遥自在学C语言 | for循环详解的更多相关文章

  1. C语言For循环详解--saying2

    c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句.for(表达式 1;表达式 2;表达式 3 ...

  2. c语言贪吃蛇详解3.让蛇动起来

    c语言贪吃蛇详解3.让蛇动起来 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 上次 ...

  3. c语言贪吃蛇详解-2.画出蛇

    c语言贪吃蛇详解-2.画出蛇 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 蛇的身 ...

  4. c语言贪吃蛇详解1.画出地图

    c语言贪吃蛇详解-1.画出地图 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 首先 ...

  5. c语言贪吃蛇详解4.食物的投放与蛇的变长

    c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...

  6. c语言贪吃蛇详解5.GameOver功能与显示成绩

    c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...

  7. C语言memset函数详解

    C语言memset函数详解 memset() 的作用:在一段内存块中填充某个给定的值,通常用于数组初始化与数组清零. 它是直接操作内存空间,mem即“内存”(memory)的意思.该函数的原型为: # ...

  8. C语言内存对齐详解(2)

    接上一篇:C语言内存对齐详解(1) VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式.VC 中提供了#pr ...

  9. C语言内存对齐详解(3)

    接上一篇:C语言内存对齐详解(2) 在minix的stdarg.h文件中,定义了如下一个宏: /* Amount of space required in an argument list for a ...

  10. 一个简单的C语言程序(详解)

    C Primer Plus之一个简单的C语言程序(详解) #include <stdio.h> int main(void) //一个简单的 C程序 { int num; //定义一个名为 ...

随机推荐

  1. Java面试——阻塞队列

    一.阻塞队列 [1]首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:

  2. Redis事件机制(未写完)

    Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件:Redis通过套接字与客户端连接,文件事件是服务器对套接字操作的抽象. 时间事件:Redis服务器中的一些操作需要给定的时间 ...

  3. Windows 11 Update Download Error Solution - 0x80248007

    I had the same issue on a Windows 2019 virtual server while performing routine windows updates. The ...

  4. THM-被动侦察和主动侦查

    被动与主动侦察 在计算机系统和网络出现之前,孙子兵法在孙子兵法中教导说:"知己知彼,必胜不疑." 如果您扮演攻击者的角色,则需要收集有关目标系统的信息.如果你扮演防御者的角色,你需 ...

  5. Java------常用类(二)

    import org.junit.Test; import java.io.UnsupportedEncodingException; import java.util.Arrays; /** * 涉 ...

  6. Django笔记十八之save函数的继承操作和指定字段更新等实例方法

    本文首发于微信公众号:Hunter后端 原文链接:Django笔记十八之save函数的继承操作和指定字段更新等实例方法 这篇笔记主要介绍 Django 一些实例方法. 什么是 实例,我们知道通过fil ...

  7. pandas之统计函数

    Pandas 的本质是统计学原理在计算机领域的一种应用实现,通过编程的方式达到分析.描述数据的目的.而统计函数则是统计学中用于计算和分析数据的一种工具.在数据分析的过程中,使用统计函数有助于我们理解和 ...

  8. 【LeetCode动态规划#08】完全背包问题实战与分析(零钱兑换II)

    零钱兑换II 力扣题目链接(opens new window) 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amoun ...

  9. 当 Amazon Lambda 遇上 Apache APISIX 可以擦出什么火花?

    本文首先介绍了什么是 Serverless,以及为什么需要 Serverless:其次,讲述了一个好的网关在 Serverless 架构下的重要性,而 APISIX 就是这样的一个网关:最后,本文重点 ...

  10. Array.prototype.at。Arrat和 String 中的 at 方法

    一篇有关新 js 特性 at 方法的思考 入参只能是number 类型,允许入参有小数(按照 chrome DevTools Console 测试确实可以带小数) 有返回值,如果对应下标在实例中存在, ...