草庐IT

【C语言】for 关键字

謓泽 2023-11-14 原文
  • 🚩WRITE IN FRONT🚩   

  • 🔎介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四"🔎
  • 🏅荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TOP100|TOP63、阿里云专家博主、掘金优秀创作者、全网粉丝量5w+、全网访问量70w+🏅
  • 🆔本文章内容由 謓泽 原创 如需相关转载还请通知博主⚠
  • 📝个人主页:謓泽的博客📃
  • 📣专栏系列:【C语言】关键字📃
  • 🎁点赞👍+ 收藏⭐️+ 留言📝​

⑩④ for ⇿ 循环「灵活」

        ⒈描述⇢循环允许您编写一个执行指定次数的循环控制结构,在循环语句当中for语句是应用最灵活的。

        ⒉定义⇢for(循环变量赋初值表达式1;循环条件表达式2;循环变量表达式3)‘\n’{语句块};

当执行到for语句的时,程序首先计算第一个表达值,接着判定第二个表达式的值。如果第二个表达式为真,程序就执行语句块的内容,当执行完语句块的内容回到表达式当中。接着并计算第三个表达式,然后检验判定第二个表达式是否为真,为真执行循环;如此反复,直到第二个表达式的值为假,则退出循环。

        ⒊注意⇢for循环嵌套尽量三层即可,太多可能会懵。

🕹拓展知识点如下👇

        『三种循环结构,分别是 do...while、while、for

        对于任何一种循环的时候一定是要有循环当中的判定条件的[注→死循环除外]

        说明🥰一般来说正常的循环都要有④部分组成。

        ⒈循环条件初始化整形变量。

        ⒉while括号里面的表达式也就是循环判定。

        ⒊代码块当中执行的语句,例:输出printf()打印语句。

        ⒋循环条件更新,因为总有一次我们要退出循环[注→死循环除外]

        🍎注意对于for循环来说在它的循环表达式有③个而while和do...while只有①个同时在循环当中也是for循环用的最多了,因为它的语法结构是很紧凑的。

        如下代码所示👇

​#include<stdio.h>
int main(void)
{
	int i = 0;
	int sum = 0;
	for (i = 1; i <= 100; i++)
	{
		sum = sum + i;
	}
	printf("sum = %d\n",sum);
	return 0;
}

运行结果🖊

        sum = 5050

✔代码说明解析

        执行到 for 语句时,先给 i 赋初值 1,判断 i<=100 是否成立;因为此时 i=1,i<=100 成立,所以执行循环体。循环体执行结束后(sum的值为1)再计算 i++。

        第二次循环时,i 的值为2,i<=100成立,继续执行循环体。循环体执行结束后(sum的值为3) 再计算 i++。

        重复执行步骤2,直到第101次循环,此时i的值为101,i<=100不成立,所以结束循环。

        每条for语句包含3个用分号隔开的表达式。这3个表达式用一对圆括号括起来,其后紧跟循环语句或语句块。

        省略表达式1的时候,其后的分号是不能省略的。

        有些程序当中省略表达式2(循环条件)的话,可能会导致程序发生死循环。

        所谓的 "死循环" 就是:循环条件永远成立,循环会一直进行下去,永不结束。死循环对程序的危害很大,一定要避免。通常都是在for循环上的判断条件上出现"死循环"。

        省略表达式3的话(自增自减),就不会再修改表达式2的循环变量了,除非你在语句块中加上了自增自减运算符。

for 循环的嵌套 

        for 循环嵌套实际上就是在for语句里面再次进行for语句的使用这种叫做循环嵌套。

        那么接下来举个代码示例,来讲解下什么是for循环。如下代码所示👇

#include <stdio.h>
int main(void)
{
    int i, j;
    for(i=1; i<=4; i++)
	{  //外层for循环-第一层
        for(j=1; j<=4; j++)
		{  //内层for循环-第二层
            printf("%-4d", i*j);
        }
        printf("\n");//换行
    }
    return 0;
}

运行结果🖍

1   2   3   4   
2   4   6   8   
3   6   9   12  
4   8   12  16  

✔代码说明解析

        外层 for 第一次循环时,i为1,内层 for 要输出四次 1*j 的值,也就是第一行数据;内层  for 循环结束后执行 printf("\n"),输出换行符;接着执行外层 for 的 i++ 语句。此时外层 for 的第一次循环才算结束。

        外层 for 第二次循环时,i为2,内层 for 要输出四次 2*j 的值,也就是第二行的数据;接下来执行 printf("\n") 和 i++,外层 for 的第二次循环才算结束。外层 for 第三次、第四次循环以此类推。

        通过上述代码我们可以看到,内层 for 每循环一次输出一个数据。而外层 for 每循环一次输出一行数据。

有关【C语言】for 关键字的更多相关文章

  1. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  2. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  3. ruby-on-rails - Rails 中的 NoMethodError::MailersController#preview undefined method `activation_token=' for nil:NilClass - 2

    似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai

  4. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  5. ruby-on-rails - 如何重命名或移动 Rails 的 README_FOR_APP - 2

    当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?

  6. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  7. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  8. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  9. ruby - Ruby 的 AST 中的 'send' 关键字是什么意思? - 2

    我正在尝试学习Ruby词法分析器和解析器(whitequarkparser)以了解更多有关从Ruby脚本进一步生成机器代码的过程。在解析以下Ruby代码字符串时。defadd(a,b)returna+bendputsadd1,2它导致以下S表达式符号。s(:begin,s(:def,:add,s(:args,s(:arg,:a),s(:arg,:b)),s(:return,s(:send,s(:lvar,:a),:+,s(:lvar,:b)))),s(:send,nil,:puts,s(:send,nil,:add,s(:int,1),s(:int,3))))任何人都可以向我解释生成的

  10. ruby - Ruby 中的闭包和 for 循环 - 2

    我是Ruby的新手,有些闭包逻辑让我感到困惑。考虑这段代码:array=[]foriin(1..5)array[5,5,5,5,5]这对我来说很有意义,因为i被绑定(bind)在循环之外,所以每次循环都会捕获相同的变量。使用每个block可以解决这个问题对我来说也很有意义:array=[](1..5).each{|i|array[1,2,3,4,5]...因为现在每次通过时都单独声明i。但现在我迷路了:为什么我不能通过引入一个中间变量来修复它?array=[]foriin1..5j=iarray[5,5,5,5,5]因为j每次循环都是新的,我认为每次循环都会捕获不同的变量。例如,这绝对

随机推荐