-
笔记:for循环与while循环可以相互替换
2020-02-09 19:59:54for循环的goto语句版本的代码和...由此可知,在机器内部for循环和while循环是等效的,二者之间可以相互替换. /**************************************************/ /* for_goto.c使用goto语句实现fot循环 / // #...for循环的goto语句版本的代码和while循环的goto语句版本的代码几乎一样.也就是说,这两种循环的控制结构是一样的.
由此可知,在机器内部for循环和while循环是等效的,二者之间可以相互替换.
/**************************************************/
/* for_goto.c使用goto语句实现fot循环 /
//
#include <stdio.h>
int main(void)
{
int n = 1;
int add = 0;/累加和/
int num = 0;
int t;
scanf("%d,", &num);
loop:
add += n;
t = n == num;
if(t)
{
goto done;
}
n++;
goto loop;
done:
printf("%d", add);
return 0;
}
//
/ while_goto.c使用goto语句实现while循环 /
/************************************************/
#include <stdio.h>
int main(void)
{
int n = 1;
int mul = 1;/阶乘/
int num = 0;
int t;
scanf("%d,", &num);
loop:
mul *= n;
t = n == num;
if(t)
{
goto done;
}
n++;
goto loop;
done:
printf("%d\n",mul);
return 0;
} -
for和while
2017-12-04 09:54:38下列关于for循环和while循环的说法中哪个是正确的?( ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果 C.两种循环任何时候都可替换...下列关于for循环和while循环的说法中哪个是正确的?( )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空我的理解是:
当知道执行次数的时候一般用for
当条件循环时一般用while
例如:
for i=0,i<n,i++
{}
这里n是已知数,可以循环n次
while i<n
{}
不知道要循环多少次,但当i>=n的时候停止循环do while循环总会执行一次,for不一定,
一般来说,for对于初学使用的要多于while,但其实while的功能要大于for,以后你慢慢会体会到的,所有的for循环都可以用while来表示,但就不是所有的while循环都可以用for循环来表示!
while的用途有时候比for要巧
因为while有do...while这个变体,无条件执行一次循环体后再判断是否达到或超过循环终止条件
但是具体用什么还是看个人程序设计风格了
举些例子:
如果是非常有规律的循环,比如简单穷举那么我们用for
如果用于处理复杂的循环,不适用单循环变量稳定递增进行的循环,那么一般我们用while其实也可以这样说,for循环都是用来表示那些显而易见的循环结构,就是使用它表示很容易就可以看出循环的头和尾,所以对于初学的程序来说这样。而while是用来表示一些相对复杂一点的循环结构,一般的while都不太容易看出循环的头和尾,有很多复杂的循环并不能用for循环来表示时,就只能用while循环来表示了。
for循环通常用在循环次数确定的时候,而while循环用在次数不确定时
比如下面这个计算字符的函数就不能用for:
int strcount( char *sz )
{
int count = 0;
while ( *(sz++) )
count++;
return count;
}无明显区别
如果知道明显的区域界限,一般用for
如果不知道界限,但可以判断条件是真与否,一般用while 如
while(XXX.next())
{
}
这个时候并不知道这个对象有好多,但可以返回是true,还是false1. 两种循环在构造死循环时的区别
用while构造死循环时,一般会使用while(TRUE)来构造死循环;而用for来构造死循环时,则使用for(;;)来构造死循环。这两个死循环的区别是:while循环里的条件被看成表达式,因此,当用while构造死循环时,里面的TRUE实际上被看成永远为真的表达式,这种情况容易产生混淆,有些工具软件如PC-Lint就会认为出错了,因此构造死循环时,最好使用for(;;)来进行。
2. 两种循环在普通循环时的区别
对一个数组进行循环时,一般来说,如果每轮循环都是在循环处理完后才讲循环变量增加的话,使用for循环比较方便;如果循环处理的过程中就要将循环变量增加时,则使用while循环比较方便;还有在使用for循环语句时,如果里面的循环条件很长,可以考虑用while循环进行替代,使代码的排版格式好看一些。对于需要无条件进行循环的语句,优先采用for语句.
;而在进行变量循环时,for语句在初始化变量后有一条跳转操作,而while没有,这个应该跟vc编译器有关
;可以说应该在效率上没有多大差别,需要进一步进行大数据量操作
;同时,我对于各种语句操作的顺序是否有时间关联不是很清楚.
2. 大批量数据操作实验 -- 自加1000w次,然后再自减1000w次,看执行时间
实践发现对于千万级数据量,执行时间并没有差异
总结:
主要考虑程序的可读性和美观,对于效率问题,可以不用考虑差异性.
所以我比较推崇,在循环次数确定时,用for,不确定时,用while~~
这是在网上摘录的一些关于for和while的区别,大家可以发表一下自己的看法,最好是有依据的。(欢迎大家讨论)
-
while for
2014-10-10 10:08:22下列关于for循环和while循环的说法中哪个是正确的?( ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果 C.两种循环任何时候都可替换...下列关于for循环和while循环的说法中哪个是正确的?( )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空我的理解是:
当知道执行次数的时候一般用for
当条件循环时一般用while
例如:
for i=0,i<n,i++
{}
这里n是已知数,可以循环n次
while i<n
{}
不知道要循环多少次,但当i>=n的时候停止循环do while循环总会执行一次,for不一定,
一般来说,for对于初学使用的要多于while,但其实while的功能要大于for,以后你慢慢会体会到的,所有的for循环都可以用while来表示,但就不是所有的while循环都可以用for循环来表示!
while的用途有时候比for要巧
因为while有do...while这个变体,无条件执行一次循环体后再判断是否达到或超过循环终止条件
但是具体用什么还是看个人程序设计风格了
举些例子:
如果是非常有规律的循环,比如简单穷举那么我们用for
如果用于处理复杂的循环,不适用单循环变量稳定递增进行的循环,那么一般我们用while其实也可以这样说,for循环都是用来表示那些显而易见的循环结构,就是使用它表示很容易就可以看出循环的头和尾,所以对于初学的程序来说这样。而while是用来表示一些相对复杂一点的循环结构,一般的while都不太容易看出循环的头和尾,有很多复杂的循环并不能用for循环来表示时,就只能用while循环来表示了。
for循环通常用在循环次数确定的时候,而while循环用在次数不确定时
比如下面这个计算字符的函数就不能用for:
int strcount( char *sz )
{
int count = 0;
while ( *(sz++) )
count++;
return count;
}无明显区别
如果知道明显的区域界限,一般用for
如果不知道界限,但可以判断条件是真与否,一般用while 如
while(XXX.next())
{
}
这个时候并不知道这个对象有好多,但可以返回是true,还是false1. 两种循环在构造死循环时的区别
用while构造死循环时,一般会使用while(TRUE)来构造死循环;而用for来构造死循环时,则使用for(;;)来构造死循环。这两个死循环的区别是:while循环里的条件被看成表达式,因此,当用while构造死循环时,里面的TRUE实际上被看成永远为真的表达式,这种情况容易产生混淆,有些工具软件如PC-Lint就会认为出错了,因此构造死循环时,最好使用for(;;)来进行。
2. 两种循环在普通循环时的区别
对一个数组进行循环时,一般来说,如果每轮循环都是在循环处理完后才讲循环变量增加的话,使用for循环比较方便;如果循环处理的过程中就要将循环变量增加时,则使用while循环比较方便;还有在使用for循环语句时,如果里面的循环条件很长,可以考虑用while循环进行替代,使代码的排版格式好看一些。对于需要无条件进行循环的语句,优先采用for语句.
;而在进行变量循环时,for语句在初始化变量后有一条跳转操作,而while没有,这个应该跟vc编译器有关
;可以说应该在效率上没有多大差别,需要进一步进行大数据量操作
;同时,我对于各种语句操作的顺序是否有时间关联不是很清楚.
2. 大批量数据操作实验 -- 自加1000w次,然后再自减1000w次,看执行时间
实践发现对于千万级数据量,执行时间并没有差异
总结:
主要考虑程序的可读性和美观,对于效率问题,可以不用考虑差异性.
所以我比较推崇,在循环次数确定时,用for,不确定时,用while~~
这是在网上摘录的一些关于for和while的区别,大家可以发表一下自己的看法,最好是有依据的。(欢迎大家讨论)
-
**笔记30 笨办法学python练习38之二,列表的转换与增添,用for替换while**
2020-05-08 09:22:15笔记30 笨办法学python练习38之二,列表的转换与增添,用for替换while 重温了for和while这两个函数的意义之后,开始做练习ex38.py。代码的录入和执行都很顺利,对于这个代码的涵义好像比以前对于代码的理解要深入...笔记30 笨办法学python练习38之二,列表的转换与增添,用for替换while
重温了for和while这两个函数的意义之后,开始做练习ex38.py。代码的录入和执行都很顺利,对于这个代码的涵义好像比以前对于代码的理解要深入一些了。顺利执行之后,对于代码的差不多每一行都做了注释,注释做好后形成的ex38.4.py再执行,依然是很顺利。我将在给出注释和执行之后,按照巩固练习的要求,再做一个ex38.5,用for取代while,并相应更改一些列表的数字来形成ex38.5.py,再予以执行,从中理解for与while的差异,以及列表的有关操作的涵义。
练习ex38.4py在这里插入代码片#一个称十样东西的变量,赋值的只有一个项目的字符串 ten_things = "Apples Oranges Crows Telephone Light Sugar" #所以,需要给ten字符串分离成若干项目,以和变量名相称,打印这个想法 print("Wait there are not 10 things in that list, Let's fix that.") #现在另有变量stuff,它可以把ten变量分离,用函数split stuff = ten_things.split(' ') #又有一个变量more_stuff是一个8位列表 more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"] #我们有三个变量均赋值,现在看对这些变量的值做出什么样的改变 #对于不等于10长度的,变量stuff做while循环 while len(stuff) != 10: next_one = more_stuff.pop() #在morestuff中拿走一些元素 print("Adding: ", next_one) #这些拿走的元素加到next_one stuff.append(next_one) print(f"there are {len(stuff)} items now.") #在stuff中加到10项了,做成了一个十项的列表了 print("There we go: ", stuff) print("Let's do some things with stuff.") #打印列表的第二个元素[1]oranges print(stuff[1]) #打印列表的最后一个元素[-1]corn print(stuff[-1]) # whoa! fancy print(stuff.pop()) #把corn这个元素拿走 # 把stuff的十个元素去掉引号' '展开 print(' '.join(stuff)) #what? cool # 在列表的排列4后加上#,使得3与5之间有星号# print('#'.join(stuff[3:5])) #super stellar
练习ex38.4.py的执行结果`在这里插入代码片PS
PS C:\Users\lenovo\1pythonw> python ex38.4.py
Wait there are not 10 things in that list, Let’s fix that.
Adding: Boy
there are 7 items now.
Adding: Girl
there are 8 items now.
Adding: Banana
there are 9 items now.
Adding: Corn
there are 10 items now.
There we go: [‘Apples’, ‘Oranges’, ‘Crows’, ‘Telephone’, ‘Light’, ‘Sugar’, ‘Boy’, ‘Girl’, ‘Banana’, ‘Corn’]
Let’s do some things with stuff.
Oranges
Corn
Corn
Apples Oranges Crows Telephone Light Sugar Boy Girl Banana
Telephone#Light
PS C:\Users\lenovo\1pythonw>做成ex38.5.py后发现,while后带的字码格式与for后带的字码格式有些区别。For常后带某物in某空间,while则是一个等号和等值号的语句,或者是真假的关键字。此外,后带的print的缩进也有区别。执行结果似乎还没有看到区别。
练习38的扩展ex38.5.py在这里插入代码片#一个称十样东西的变量,赋值的只有一个项目的字符串 six_things = "Apples Oranges Crows Telephone Light Sugar" #所以,需要给ten字符串分离成若干项目,以和变量名相称,打印这个想法 print("Wait there are not 8 things in that list, Let's fix that.") #现在另有变量stuff,它可以把ten变量分离,用函数split stuff = six_things.split(' ') #又有一个变量more_stuff是一个8位列表 name_stuff = ["zhao", "qian", "sun", "li", "zhou", "wu", "zheng", "wang"] #我们有三个变量均赋值,现在看对这些变量的值做出什么样的改变 #对于不等于10长度的,变量stuff做while循环 for name in name_stuff: next_one = name_stuff.pop() #在morestuff中拿走一些元素 print("Adding: ", next_one) #这些拿走的元素加到next_one stuff.append(next_one) print(f"there are {len(stuff)} items now.") #在stuff中加到10项了,做成了一个十项的列表了 print("There we go: ", stuff) print("Let's do some things with stuff.") #打印列表的第二个元素[1]oranges print(stuff[1]) #打印列表的最后一个元素[-1]corn print(stuff[-1]) # whoa! fancy print(stuff.pop()) #把corn这个元素拿走 # 把stuff的十个元素去掉引号' '展开 print(' '.join(stuff)) #what? cool # 在列表的排列4后加上#,使得3与5之间有星号# print('&'.join(stuff[4:6])) #super stellar
练习ex38.5.py的执行
在这里插入代码片PS C:\Users\lenovo\1pythonw> python ex38.5.py Wait there are not 8 things in that list, Let's fix that. Adding: wang there are 7 items now. Adding: zheng there are 8 items now. Adding: wu there are 9 items now. Adding: zhou there are 10 items now. There we go: ['Apples', 'Oranges', 'Crows', 'Telephone', 'Light', Let's do some things with stuff. Oranges zhou zhou Apples Oranges Crows Telephone Light Sugar wang zheng wu Light&Sugar PS C:\Users\lenovo\1pythonw> python ex38.4.py
这个练习,对于巩固练习中提到的调用函数的意思有了更进一步的理解。如教材所说,在more_stuff列表中调用函数pop,这其实就是一个python字符串的对译,它在python中可以翻译为more_stuff.pop()。这个翻译出来的东西,在python中还可以另外表示为另一个指令符:pop(more_stuff),翻译为中文大概是,参数为more_stuff的函数pop。
Python中的class有和自然语言相通之处,但差别可能很大,也许再阅读完成几个练习,对于class,对于面向对象编程object oriented programming,还有一些相关的python语言中的字符,就会有更多的认知。 -
C#学习笔记(五):while循环和for循环
2019-02-11 16:37:00while循环和for循环,可以相互替换,范围和效能一样,理解事物的逻辑不一样 while循环用于条件不确定的逻辑 for循环用于计算次数的逻辑 for循环 快捷写法,按两下TAB i++:for+按两下TAB i--:forr+按... -
for 和 while的区别
2012-08-25 13:34:29下列关于for循环和while循环的说法中哪个是正确的?( ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果 C.两种循环任何时候都可替换... -
bash编程之while和until循环、变量替换
2014-01-15 20:46:13一、循环体 while 测试条件; do 语句1 语句2 ... done while [ $Count -le 5 ]; do let Count++ done 条件满足时就循环,直到条件不再满足,则退出循环; for如何退出循环?遍历列表中的元素完成; w... -
while,do...while,for 三种循环的比较
2019-11-14 13:57:19(2)在while循环和do while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应该在循环中包含使循环趋于结束的语句(如 i++)。for循环可以在表达式3中包含使循环趋于结束的语句,甚至可以... -
使用While循环减少Foreach嵌套和替换?
2012-12-21 15:49:54<p>This returns a single row as an array and I can manipulate this as I want, for example: <pre><code>if ($Rows['Reoccour'] == 1) { $NextDate = date('o-m-d', strtotime($Rows['Date'] . " +" . $Rows... -
c语言学习笔记(6)——for和while循环
2013-08-06 21:21:43for和while等价替换 -------------------------- int i = 1; for (i; i sum = sum + 1; } -------------------------- int i = 1; while(i sum = sum + 1; i++; } -------------------------- 从键盘... -
JavaScript | for循环和while循环的区别
2018-07-04 16:19:14写在前面:for循环和while循环语法规则略有不同,两种方法可以替换使用,但是在部分问题上各有优势。主要代码://猜数字游戏,谜底:50; //用户可以猜5次 ,若用户猜的小于50,提示:猜小了;否则提示猜大了;猜中了... -
C语言学习笔记(6)——for和while循环
2014-03-03 20:51:24for和while等价替换 -------------------------- int i = 1; for (i; i sum = sum + 1; } -------------------------- int i = 1; while(i sum = sum + 1; i++; } -------------------------- 从键盘... -
Linux下执行脚本报错 :unexpected EOF while looking for matching ``' 和 syntax error: unexpected end ...
2020-03-31 14:27:34问题描述 最近在执行Linux脚本的时候遇到如下的报错...接着看第31行,结果发现该脚本只有30行,于是怀疑问题出在脚本最后一行,是不是末尾有异常符号,开始对最后一行进行删除、替换和注释等操作,一通操作之后问... -
for循环、while循环、do while循环是否可以相互转换
2020-05-19 11:55:23下列关于for循环和while循环的说法中那个是正确的?() A、while循环能实现的操作,for循环也都能实现 B、while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果 C、两种循环任何时候都可替换 D、两种... -
switch case 范围_用if else,switch,while,for颠覆你的编程认知
2020-12-05 13:47:48前言该篇文章主要会涉及如下几个问题:1、if else和switch case在日常开发中该如何抉择?两者相比谁的效率会高些?2、如何基于赫夫曼树结构减少if else分支判断次数?3、如何巧妙的应用do...while(0)改善代码结构?4... -
ios 替换数组中元素_iOS中注意使用for..in同时读取和修改数组导致crash
2020-12-19 08:41:38问题在工作中遇到数组闪退的问题:crash信息:'NSGenericException', reason: '*** Collection was mutated while being enumerated.'*** First throw call stack:中文的意思就是,在数组被枚举时发生突变,o(╥﹏╥... -
忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(4)for == while ?
2014-04-12 10:18:45一、for和while等价替换int i = 1; for (i; i; i++){ sum = sum + 1; }int i = 1; while(i){ sum = sum + 1; i++; }二、从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no回文数:正着写倒着写一样... -
ruby 的while
2017-11-15 19:07:00while 是一个非常强大的语句,很大程度上可以替换其他判断和循环。 1、while 代替if 1 2 3 while5>3 puts"ok" end 2、while 代替 for 循环 1 2 3 4 5 6 7 sum=0 i=1 whilei<=5 ... -
替换节点XMLDOM和PHP
2016-07-02 11:17:24<p>I have a problem to replace an XML node while entering data into a form My code below : <pre><code>$xml = new DOMDocument("1.0", "ISO-8859-1"); $xml->preserveWhiteSpace = FALSE; $xml->... -
shell(十一)while循环
2019-09-03 15:43:13while循环工作中使用的不多,一般是守护进程程序或始终循环执行场景,其它循环计算,都会用for替换while 二 while循环的类型 当型(while)和直到(until)型循环语句 1、while条件句 while 条件 do 指令 … ... -
用递归和正则表达式替换字符串中的文本
2019-07-21 19:47:24<p>I have functions to replace these blocks accordingly, and I realize a foreach or while function will be the best way to deal with it, but unfortunately, replacing one <code>{{...}}</code> may ... -
§12 循环101-while循环
2015-01-28 10:32:00While和for具有一定的可替换性。语法如下: whiletestbody continue终止当次循环,break退出整个循环。 注意while之后要用大括号来括住,用引号的话会导致只进行一次替换,导致无限循环。 ... -
bat文件交互式命令_如何使用2个命令交互式搜索和替换多个文件
2020-08-21 12:00:43bat文件交互式命令While a multitude of methods exist to search for and replace words in a single file, what do you do when you’ve got a string to update across multiple unrelated files, all with ...
-
pmp考前洗脑.docx
-
Serv-U_FTP_Server_cn.zip
-
多表查询与单表查询效率问题
-
Visual+Assist+X_10.9.2399.rar
-
LeetCode - Easy - 989. Add to Array-Form of Integer
-
如何判断两个浮点数是否相等?
-
打包时错误 Entry name ‘classes.dex‘ collided 的解决办法
-
VMware vSphere ESXi 7 精讲/VCSA/VSAN
-
C#Winform桌面开发编程上位机基础入门
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
前端学习第一天---02
-
MarkText 0.16.3 安装包
-
Android TV 遥控器监听返回弹窗
-
转行做IT-第15章 Collection、泛型、Iterator
-
web常见漏洞思维导图.rar
-
MySQL DML 语言(插入、更新与删除数据)
-
python Flask+scrapy+人工智能 实现高性能搜索引擎
-
MySQL 函数、用户自定义函数
-
5、发展对象“公开答辩”情况表(样式).doc
-
Unity RUST 逆向安全开发