前言

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

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

一、人物简介

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

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

二、for循环的语法

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

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

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

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

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

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

四、for循环的灵活性

1、内置表达式

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

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

2、外置表达式

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

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

3、省略循环条件

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

for (;;) {
// 循环体代码
if (condition) {
break; // 在某个条件下跳出循环
}
}

4、省略循环操作

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

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

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

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

五、for循环的应用

示例 1: 遍历数组

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

#include <stdio.h>

int main()
{
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0; for (int i = 0; i < 5; i++) {
sum += numbers[i];
} printf("Sum: %d\n", sum); return 0;
}
  • 运行结果

示例 2: 打印图形

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

#include <stdio.h>

int main() {
int rows = 5; // 三角形的行数 for (int i = 1; i <= rows; i++) {
// 打印每行的空格
for (int j = 1; j <= rows - i; j++) {
printf(" ");
} // 打印每行的星号和间隔空格
for (int j = 1; j <= 2 * i - 1; j++) {
if (j % 2 == 0) {
printf(" ");
} else {
printf("*");
}
} printf("\n");
} return 0;
}
  • 运行结果

小结

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

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. 剑指offer 第18天

    第 18 天 搜索与回溯算法(中等) 剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长 ...

  2. Nmap学习

    Nmap学习 一.主机发现 1.全面扫描/综合扫描 nmap -A 192.168.142.201 2.Ping扫描 nmap -sP 192.168.142.0/24 3.免Ping扫描,穿透防火墙 ...

  3. nginx重启和操作

    在linux操作系统中,重启nginx 1.当不知道nginx所在目录时,需要先查找到nginx的位置  查看ngnix位置(master process 后面的就是 nginx的目录): ps -e ...

  4. Redis的自增也能实现滑动窗口限流?

    限流是大家开发之路上一定会遇到的需求.比如:限制一定时间内,接口请求请求频率:一定时间内用户发言.评论次数等等,类似于滑动窗口算法.这里分享一份拿来即用的代码,一起看看如何利用常见的 Redis 实现 ...

  5. 自定义SpringMVC实现

    首先要知道springmvc主要流程: 当用户,也是就是请求送达过来的时候, 1.前端控制器会获取, 2.请求处理映射器,返回执行链接 3.获取执行适配器适配,交给执行器 4.返回modelandvi ...

  6. 随手记:lnmp 安装完 redis 后无法全局操作

     说明redis-server不是全局命令,那么假如到全局即可 假设redis安装目录是:/usr/local/redis/bin/redis-cli ln -s /usr/local/redis/b ...

  7. 31-dll

    webpack.dll.js /** * 使用dll技术,对某些库(第三方库:jquery.react.vue...)进行单独打包 * 当你运行 webpack 时,默认查找 webpack.conf ...

  8. 基于Canal实现MySQL 8.0 数据库数据同步

    前言 服务器说明 主机名称 操作系统 说明 192.168.11.82 Ubuntu 22.04 主库所在服务器 192.168.11.28 Oracle Linux Server 8.7 从库所在服 ...

  9. Sitecore XP 10.3(latest) Docker一键部署

    本文演示通过PowerShell+Docker Desktop for Windows 一键部署Sitecore10.3(即Sitecore最新版)Docker开发/测试/演示 环境. 官方参考 Si ...

  10. 关于 import 和 import static

    import 嘛,就是导包.比如说java的一些自带的包,例如 import java.lang.Matn: 又或者我们自己做的包,例如 import com.link.testImport; 一些实 ...