c语言中for循环语句的用法(c语言中for循环语句的用法有哪些)

好吧,也许你认为我在写一篇如何使用for循环的文章,,,,首先,我想说无论是学习C语言还是学习java的同学都能从此文中获益,还有,你确定你会用for循环吗?其实许多东西你只是在表面,要品才能有一种感觉,有的时候,我喜欢咬文嚼字一下,所以你可以认为我现在在程序中讨论关于“用推还是用敲”的话题。

c语言中for循环语句的用法(c语言中for循环语句的用法有哪些)

先来问你一个问题,一个简单的数学问题,不过你尽量快点回答,区间[9,15]中有几个整数?

多数想马上表现自己聪明的同学可能会马上回答6个,但是是7个,你会发现这种双闭区间的元素会比你想象得多,就连[9,9]都有一个元素是吗?而半开半闭就不同了[0,10)你可以不假思索地用[m,n)中有n-m个元素,来回答这个答案,10个元素,你发现什么了没?这。。有点像数组,恩恩,这个问题就是我们在本文后面将讨论的你如何才能熟练地使用这些多1少1的问题。现在先开始说for循环

我常常把最简单的for循环称之为循环计数器:

for(inti =1;i<=10;i++)

cout<<"求妹子"<

你看,这里的i只是一个计数的作用,它在告诉cpu,去把我的这条语句执行十次吧!

你可能会说,这有什么?for都是这样的呀!请你往下看

for(inti =1;i<=10;i++)

cout<<"求"<

这个for就不同了,它把i做为一种产物,在循环中使用它,我把它称之为循环产生器,这个i就不仅仅是让循环执行十次的作用了,它在每次的循环中产生,循环体的语句中有自己的作用,所以当你理解所谓的循环产生器,你就会很轻松地写出各种多层循环的程序了,比如崔哥曾出个这样一个题:

请用循环语句打印一个空心菱形:

我将用一种清晰的思路来分析写这个程序,

嗯,我先写一个函数,它提供的接口如下:

void print(int n,int p,int q);//在一行输出n个元素,除了在p和q出输出*其它地方都输出空格

恩,很简单的一个函数:

void print(int n,int p,int q)
{
    for(int i = 1;i<=n;i++)
    {
        if(i==p||i==q)
            printf("*");
        else
        printf(" ");
    }
    printf("n");
}
void print(int n,int p,int q)
{
    for(int i = 1;i<=n;i++)
    {
        if(i==p||i==q)
            printf("*");
        else
            printf(" ");
    }
    printf("n");
}

所以,用所谓的循环产生器,产生我们需要的参数传递给这个函数不就行了吗?

下面,我们先做一些约定

“你我约定,难过的往事不许提”。。。

开玩笑了,,,我们继续:

首先,输出空心菱形,这个行数一定是个奇数,

所以我们用1到LOW来表示这LOW个位置,而且中间的那个位置就是LOW/2+1

这样我们的程序就是这样:

#define LOW 13
int j,k,n = LOW/2+1;//空心菱形的中间位置
j=k=n;
for(int i = 1;i<=LOW;i++)
{
    print(LOW,j,k);
    if(i<n)
        j--,k++;
    else
        j++,k--;
}

i做为一个产生器,不但让循环执行LOW次(打印low行)同时也控制产生这j和k这两个参数了,当然我们在清晰道理之后,完全可以把这个函数嵌到循环中,看只用了两个for,而不是某些同学的分段循环,四个for。。。

继续讨论有关for的话题,现在我要通过说明for的一些使用细节,来向你展示,你用什么样的语言决定你的编程思维,我问你如果让你访问数组a[10]的每个元素,你会写怎样的代码?

for(int i = 0;i<=9;i++)

还是

for(int i = 0;i!=10;i++)

我一直都是使用第二种,因为这可以很好地说明半开半闭区间的思想,而且,C数组本身就是从零开始的,我们用10来表示它最后一个元素的下一个位置(因为最后一个元素是a[9]),

其实,不仅仅是数组,在许多语言的迭代器(包括c++标准库)中都会使用第一个元素表示头,最后一个元素的下一个位置表示尾,半开半闭区间的这种思想可以让你不用陷入多1或是少1的问题中,比如[n,n)是没有元素的,[n,m)是有m-n个元素的。。

至于为什么是i!=10,而不是i<10,那要是这样的语句呢?

for(int i = 10;i!=0;i--)

不用把”<”改成”>”了,而且。。。作为一个终止状态,还有用(后面论述)

现在还记得开头的那个求妹子的列子吗?

for(inti =1;i<=10;i++)

cout<<"求"<

这里我就让i从1到10,(我不可能求0个妹子吧?)所以,这种对循环i的选取,0或1,是很有细节思考的。

下面再看一个例子:

inti;

for(i=0;a[i]!='c'&&i!=N;i++);

这段代码的作用是在一个char数组中找到第一个是’c’的元素,并返回它的索引

有几个有趣的地方:

我把i的定义放在外面

这个for循环没有循环体,看那个分号。。。。。。

不是计数器,不是产生器,我喜欢把这种for称之为循环搜捕器,它用来找一个元素

所以我把i定义在循环外,因为之后我们还要使用到i,而同时也与前面的那些for循环中把i定义到for里面形成了对比,因为之前的作用,我并不想把它的作用域外流,实际上,在c++中鼓励你这么使用for,不让它外流,这种东西在vc6.0会出点问题(因为它不是标准的c++),因为i的作用域会外流,所以你就不能写for(int i;;)这样的语句两次,它会报错说你重定义了。而在c语言中,之前是不支持for(int i;;)这种定义方式的,不过在c99的时候,它也支持了,并鼓励你这样写。

并且,通过这个搜捕器,它的条件是a[i]!='c'&&i!=N,所以循环终止时,是a[i]=='c'||i==N这就是我之前说的终止条件,我们就可以在之后写这样的语句;

if(i==N)

//没找到

else

//找到了。i 是它的下标

这就是为什么用’!=’而不是<的原因了,这可以很清楚地看清终止条件。

以上就是今天的分享,小伙伴们可以点个赞支持一下哟~

另外,对现在我们的大多数朋友来说还是学编程技术最重要!栽一棵树最好的时间是十年前,其次是现在。对于准备学习编程的小伙伴,如果你想更好地提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

c语言中for循环语句的用法(c语言中for循环语句的用法有哪些)

编程学习视频分享:

c语言中for循环语句的用法(c语言中for循环语句的用法有哪些)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

本文所有内容来自互联网,如有侵权/不实内容请联系我们删除,联系邮箱postusb@foxmail.com

发布者:缘分,转转请注明出处:https://www.bjxdyg.com/life/122038.html

(0)
缘分缘分
上一篇 2023年 3月 12日 下午4:20
下一篇 2023年 3月 12日 下午4:33

相关推荐

  • 小曾个人资料()

    大家好,近期很多朋友对于小曾个人资料产不是很理解。然后还有一些网友想弄清楚,泰缘号(www.bjxdyg.com)已经为你找到了相关问题的答案,接下来和我们一起看看吧,希望对大家有所帮助! 明天,为期一周的NBA联合试训,将在芝加哥正式进行。 本该是摩拳擦掌提前做好准备的时间节点,中国小将曾凡博,却突然宣布退出此次试训。 消息源显示,他不会前往芝加哥,而是会…

    趣味生活 2022年 12月 26日
    39000
  • 第八英语怎么读(1000英语怎么读)

    英文序数的使用,是不少人在英文对话上会遇到的问题 我自己也常常会忘记如何拼字和发音呢! 第几次的英文写法?缩写? 第一次到第100次怎么写? 第一次的英文是:The First Time 「我的第一次」英文是: My First Time 强调我的第一次: My Very First Time 数字1~20的英文写法是: 一 one 二 two 三 thre…

    趣味生活 2023年 5月 23日
    15700
  • 环嗪酮使用方法

    竹子、大树以及多种灌木由于根系发达,普通除草剂很难能将其杀死,目前使用最多,效果最好的就是环嗪酮除草剂。 作用机理其作用机理是抑制被防除植物的光合作用,植物根系和叶片都能吸收环嗪酮,通过木质部传导,使代谢紊乱,导致死亡。 草本植物在温暖潮湿条件下,施药后2周内死亡;若气温低时4-6周才表现药效。 木本植物通过根系吸收向上传导到叶片,阻碍光合作用,造成树木死亡…

    2023年 6月 6日
    1.2K00
  • 怎样将两个word文档合并成一个(如何把两个word文档合为一个)

    在我们工作中,我们经常会编写多个Word文档内容,那么怎么将多个单个的Word文档合并到一个文档中,这就会显得有些难度。 如上图所示,我们需要将三个不同的案例,快速的汇总到我们的案例汇总表当中。许多朋友可能在这里会直接一个个选择复制粘贴的方式来进行操作,但是数据量大的情况下就会比较耗费时间。下面我们就来学习一个快速合并多个Word文档内容的操作技巧。 第一步…

    趣味生活 2023年 6月 2日
    34900
  • 心悦诚服的意思(可望而不可即的意思)

    原文:“绝不能以为我们有军队和政权在手,一切都要无条件地照我们的决定去做,因而不注意去努力说服非党人士同意我们的意见。并心悦诚服地执行。" 《抗日根据地的政权问题》(《毛泽东选集》第二卷) 出处:“心悦诚服"见于《孟子.公孙丑上》:“以力服人者,非心服也,力不赡也;以德服人者,中心悦而诚服也,如七十子之服孔子也。"意思是说,靠武力使人…

    2023年 3月 14日
    21000

发表回复

登录后才能评论

联系邮箱

postusb@foxmail.com

邮箱咨询: QQ交谈

邮箱:postusb@foxmail.com

工作时间:周一至周五,9:30-18:30,节假日休息