好吧,也许你认为我在写一篇如何使用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("*");elseprintf(" ");}printf("n");}
void print(int n,int p,int q){for(int i = 1;i<=n;i++){if(i==p||i==q)printf("*");elseprintf(" ");}printf("n");}
所以,用所谓的循环产生器,产生我们需要的参数传递给这个函数不就行了吗?下面,我们先做一些约定
“你我约定,难过的往事不许提” 。。。
开玩笑了,,,我们继续:
首先,输出空心菱形,这个行数一定是个奇数,
所以我们用1到LOW来表示这LOW个位置,而且中间的那个位置就是LOW/2+1
这样我们的程序就是这样:
#define LOW 13int 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++;elsej++,k--;}
i做为一个产生器,不但让循环执行LOW次(打印low行)同时也控制产生这j和k这两个参数了,当然我们在清晰道理之后 , 完全可以把这个函数嵌到循环中,看只用了两个for,而不是某些同学的分段循环,四个for 。。。继续讨论有关for的话题,现在我要通过说明for的一些使用细节 , 来向你展示,你用什么样的语言决定你的编程思维,我问你如果让你访问数组a[10]的每个元素,你会写怎样的代码?
for(int i = 0;i<=9;i++)
还是推荐阅读
- 写作提纲怎样写思维导图语文 写作提纲怎样写
- 奥迪语音怎么唤醒 奥迪语音唤醒方式
- 不假思索的反义词 不假思索的反义词语
- 苹果手机微信语音没声音怎么回事 苹果手机微信语音没声音是什么原因
- 猪肉英语怎么说啊 猪肉英语怎么说
- 我们都用英语怎么说 都用英语怎么说
- 小学生成绩差怎么提高英语 小学生成绩差怎么提高
- 微软更新安卓版SwiftKey:可在系统中更改输入语言
- damage是什么意思中文 damages
- 雷鸟新AR眼镜发布:搭载骁龙XR2 支持多语言AI翻译