for 循环与while循环的区别
发布网友
发布时间:2022-04-21 22:14
我来回答
共12个回答
懂视网
时间:2022-04-18 00:25
在我们日常生活中偶尔会遇到一些自己不知道如何解决的问题,比如for循环和while循环的区别。那么我们应该怎样解决这种自己不知道for循环和while循环的区别的情况呢?那么接下来就由我来介绍一下for循环和while循环的区别吧。
区别一:
使用场景不同:
知道执行次数的时候一般用,条件循环时一般用while。
区别二:
两种循环在构造死循环时的区别:
while循环里的条件被看成表达式,因此,当用while构造死循环时,里面的TRUE实际上被看成永远为真的表达式,这种情况容易产生混淆,有些工具软件如PC-Lint就会认为出错了,因此构造死循环时,最好使用for(;;)来进行。
看了我的方法,现在你知道for循环和while循环的区别了吗?学会了的话就快快把这个方法分享出去,让更多的人知道for循环和while循环的区别。以上就是for循环和while循环的区别。
热心网友
时间:2022-04-17 21:33
do-while循环的与for循环,while循环的区别:
一、循环结构的表达式不同
do-while循环结构表达式为:do{循环体;}。
for循环的结构表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。
while循环的结构表达式为:while(表达式){循环体}。
二、执行时判断方式不同
do-while循环将先运行一次,因为经过第一次do循环后,当检查条件表达式的值时,其值为 不成立时而会退出循环。保证了至少执行do{ }内的语句一次。
for循环执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号{}可以省略,执行完中间循环体后接着执行末尾循环体。
while循环执行时当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)。
三、执行次数不同
do-while循环是先执行后判断,执行次数至少为一次。
for循环是先判断后执行,可以不执行中间循环体。
while循环也是先判断后执行,可以不执行中间循环体。
四、执行末尾循环体的顺序不同
do-while循环是在中间循环体中加入末尾循环体,并在执行中间循环体时执行末尾循环体。
for循环的中间循环体在条件判断语句里,执行末尾循环体后自动执行中间循环体。
while循环的末尾循环体也是在中间循环体里,并在中间循环体中执行。
参考资料来源:百度百科——do while
百度百科——for循环
百度百科——while
热心网友
时间:2022-04-17 22:51
在C语言里面,所有可以用while循环解决的问题,都是可以用for循环解决的,for(代码1;代码2;代码3)中,代码1作为初始化用,代码2作为判断,代码3作为自增或自减用,使结果慢慢向代码2的判断语句成立。VB里面的话,for
是在知道循环次数的情况下用,for
a=1
to
100,这样子。希望有帮助,谢谢。
热心网友
时间:2022-04-18 00:25
一楼二楼都对
for语句是先判断循环条件,再执行循环语句.
while语句则正好相反
回答者:马义德 - 助理 二级 9-19 18:28
三楼就不对了,while语句同样可以先判断循环条件,再执行循环语句
热心网友
时间:2022-04-18 02:17
while(参数) 参数--循环条件 如:while(i>1)
for(参数1;参数2;参数3)
参数1--变量循环前的赋值或者不要参数
参数2--循环条件
参数3--表达式
如:for(i=1;i<11;i++)
热心网友
时间:2022-04-18 04:25
for语句是先判断循环条件,再执行循环语句.
while语句则正好相反
热心网友
时间:2022-04-18 06:49
语句的表达方式不一样,但是一定程度上可以互相改写的.
但是一般来说for用于次数一定的循环,while用于次数未知的循环
热心网友
时间:2022-04-18 09:31
FOR循环是当知道循环次数时用地(EG:FOR I:=1 TO 10)
WHILE 是不知次数时用(符合条件时循环)
EG:(PASCAL)
READLN(N);
WHILE N=0
N:=N-1;
WRITELN(N);
END;
REPEAT 循环与WHLIE一样,只是符合条件时退出循环.
EG:(PASCAL)
READLN(N);
REPEAT
N:=N+1;
WRITELN(N);
UNTIL N<1000;
热心网友
时间:2022-04-18 12:29
仅仅是为了方便书写,
比如迭代时使用for就比while 直观些。
学过编译原理都知道编译出来的代码并没有什么大的区别。编译器为了优化,把所有的循环都预先转换成
do while 循环,再做进一步处理。
所以只要你觉得方便,用那个都无所谓,只要写出来的代码还看,容易理解。
热心网友
时间:2022-04-18 15:43
for 循环用于已知循环次数
while循环用于未知循环次数
热心网友
时间:2022-04-18 19:15
登陆www.sqlus.com 很多计算机应用教程,绝对能解答你的困惑。
热心网友
时间:2022-04-18 23:03
循环结构是指在满足循环条件时反复执行循环代码代码块,直到循环条件不能满足为止。一个循环语句一般应包含4个部分的内容:
初始化部分:设置循环控制的一些初始条件
循环体部分:反复执行的代码
迭代部分:修改循环控制条件
判断部分:判断是否继续循环执行体
while循环
格式如下:
初始化部分;
while(判断部分){
循环体部分;
迭代部分;
}
其中初始化部分和迭代部分可以没有。如果有初始化部分,程序先执行初始化部分,再执行判断部分,如果为真值,则执行红色显示的部分(即执行循环体部分,如果有迭代部分,执行迭代部分),然后再执行判断部分,如果为真值,再执行红色显示的部分,直至判断部分运算的结果为假值结束循环。请看程序示例一:
public class WhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you " +
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
while (c != 'g') {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
}
System.out.println(copyToMe);
}
}
程序示例一
关于该程序的详细执行过程以及详细的注释,请选择代码分析窗口。
源程序分析:程序的主要功能是将字符串copyFromMe中的第1个字符到字符'g‘,赋给字符串copyToMe。蓝色显示的语句是得到一个空的StringBuffer,StringBuffer和String的区别在于StringBuffer的长度可以变化,即可以向其中加入或删除字符,但字符串的效率较高,StringBuffer和String的概念还要在下一章进一步澄清。红色显示的表达式的运算结果是字符'C',即字符串copyFromMe的第0个字符。绿色显示的语句是向字符串缓冲区的尾部添加一个字符,即变量c的值。
do-while循环
格式如下:
初始化部分;
do{
循环体部分;
迭代部分;
}while(判断部分)
其中初始化部分和迭代部分可以没有。如果有初始化部分,程序先执行初始化部分,再执行红色显示的部分(即执行循环体部分,如果有迭代部分,执行迭代部分),然后再执行判断部分,如果为真值,执行红色显示的部分,一直到判断部分的结果为假值结束循环。do-while循环与while循环的区别在于do-while循环先执行一遍红色显示的部分,再运算判断部分,根据其结果来判断是否结束循环,所以红色显示的部分至少执行一遍,而while循环先运算判断部分,所以有可能红色显示的部分还没有执行就结束了。请看程序示例二:
public class DoWhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you " +
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
do {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
} while (c != 'g');
System.out.println(copyToMe);
}
}
程序示例二
关于该程序的详细执行过程以及详细的注释,请选择代码分析窗口。
源程序分析:红色显示的语句功能已经在前面的例子中已经澄清
for循环
for循环是使用最广泛的一种循环结构,格式如下:
for(初始化部分;判断部分;迭代部分;){
循环体部分;
}
其中初始化部分可以没有,如果有初始化部分,首先执行初始化部分,然后执行判断部分,如果结果为真值,执行循环体部分,最后执行迭代部分。完成一次循环后,再执行判断部分,直到其结果为假值 。
结束循环。for循环通常用于循环次数可以确定的情况,也可用于不确定的情况。注意:初始化部分和迭代部分可以使用逗号来分隔多个语句,如下所示:
for(int i=0,int j=0;i<j;i++,j--){......}
请看程序示例三
public class ForDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589};
for (int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + " ");
}
System.out.println();
}
}
程序示例三
关于该程序的详细执行过程以及详细的注释,请选择代码分析窗口。
源程序分析:该程序的功能是在控制台上显示一个数组的全部元素。红色显示的语句是定义一个int型数组变量arrayOfInts,即数组的每个元素是int型数据,同时给arrayOfInts赋初值。蓝色显示的表达式得到arrayOfInts的长度,即它的元素个数,在这里为4。绿色显示的表达式是得到arrayOfInts元素的值,i是索引值,例如当i等于0时,arrayOfInts[i]的值是32。
在以上循环的执行过程,通过break语句和continue语句可以结束循环体部分的执行
break语句
break语句的功能是结束整个循环结构的执行,从紧跟循环结构的第一条语句始执行。请看程序示例四:
public class BreakDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076,2000, 8, 622, 127 };
int searchfor = 12;
int i = 0;
boolean foundIt = false;
for ( ; i < arrayOfInts.length; i++) {
if (arrayOfInts[i] == searchfor) {
foundIt = true;
break;
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at index " + i);
} else {
System.out.println(searchfor + "not in the array");
}
}
}
程序示例四
关于该程序的详细执行过程以及详细的注释,请选择代码分析窗口。
在程序示例四中,break语句是结束内层循环,即跳出里面的花括号,事实上,可以用"标签化中断"语句跳出任意的嵌套的花括号中的代码块,请看程序示例五:
public class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = { { 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i = 0;
int j = 0;
boolean foundIt = false;
search:
for ( ; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length; j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at " + i + ", " + j);
} else {
System.out.println(searchfor + "not in the array");
}
}
}
程序示例五
关于该程序的详细执行过程以及详细的注释,请选择代码分析窗口。
源程序分析:红色显示的语句是"标签化中断"语句,它的功能是跳到标签search(蓝色显示)处的语句的下一条语句开始执行。绿色显示的语句是定义一个二维数组,二维数组是指它的每个元素是一个数组,在这里它的第0个元素是数组{ 32, 87, 3, 589 },同时给它赋初值。银色显示的表达式arrayOfInts.length是得到二维数级arrayOfInts的长度,在这里是3。*显示的表达式是得到二维数级arrayOfInts的第i个元素的第j个元素的值,例如当i和j的值分别是1和2时,表达式arrayOfInts[i][j]的值是77。
continue语句
continue语句的功能是跳过循环体中下面还未执行的语句,回到循环体部分的开始,从第一条语句始执行,但是在执行前,先要执行判断部分,以决定是否继续执行循环,对于for循环,在执行判断部分前,还要执行迭代部分。请看程序示例六:
public class ContinueDemo {
public static void main(String[] args) {
StringBuffer searchMe = new StringBuffer("peter piper picked a peck of pickled peppers");
int max = searchMe.length();
int numPs = 0;
for (int i = 0; i < max; i++) {
if (searchMe.charAt(i) != 'p')
continue;
numPs++;
searchMe.setCharAt(i, 'P');
}
System.out.println("Found " + numPs + " p's in the string.");
System.out.println(searchMe);
}
}
程序示例六
关于该程序的详细执行过程以及详细的注释,请选择代码分析窗口。
另外,continue语句也可以跳转到标签指明的地方去,格式为:continue 标签名,由于用得较少,这里就不再详述了。