题目:使用嵌套循环计算1!+2!+3!+...+100!
关于循环初始化:自己起初认为变量循环初始化在外层循环外面和里面没有什么区别,就将其放在了外层循环里面。侥幸运行正常。
而书里提到这个循环初始化语句放在不同位置会产生不同结果,如图,当将sum和item放在外层循环外时,计算结果是:1!+1!*2!+...+1!*2!*3!*...*100!.显然不是题目想要的结果。
出错原因是:循环初始化语句放错位置了。
避错:在进行嵌套语句初始化时要分清外层循环初始化与内层循环初始化。
展开全部
1、java中,for循环的格式一般如下几种62616964757a686964616fe4b893e5b19e31333363376466for(语句1;条件;语句2)
{
//语句1,2,就是正常的语句,条件语句是需要循环执行下去必须符合的条件,
//条件句可以为空,不写就等同于true
//{}内就是等待执行的语句,也叫循环体
}
/**
例如:
**/
/**
1、
**/
for(int i=0;i
{
//语句1定义了一个循环变量i,初值为0 ,条件就是判断它是否
//如果是,system.out.println(i);
}
//执行结果就是输出0-(n-1)
/**对于边界值,当i==n-1,也就是i仍
此时i==n了,再去判断i
**/
/**
2、
**/
int i=0;//i初值为0
for(;;){//三句语句都空是可以的,就是无条件执行循环
System.out.println(i);
if (i==10) {
break;//i==10就跳出循环,break就结束循环
}else {//否则i++
i++;
}
}
这段代码就是输出0-10
/**
3、
**/
int i=0;
for(;true;System.out.println("#")){//第三个语句里,写一句输出
System.out.println(i);
if (i==10) {
break;
}else {
i++;
}
}
/**
上述代码运行的时候就会有先输出0,在输出#,就是执行的时候,
判断了条件语句,如果符合立刻执行循环体,执行完回来再执行的条件语句后面的语句,
这样,基本对for的执行逻辑就能理解了。
**/
例2图:
例3图:
在vs2013的debug模式中,如果用这样来定义的话,
int iSum = 0;
for (int j=0,i = 0; j<3&&i < 3;j++,i++)
{
iSum += i;
iSum += j;
}
int iTemp = i;那最后iTemp的值最终会变成2!
而在变量监视中显示出来的值最是i=3。那就奇怪了,为什么i=3,赋值给iTemp,iTemp就变成了2呢?
我们再对上面的代码做一点修改
int iSum = 0; i = 0; for (int j=0; j<3&&i < 3;j++,i++) { iSum += i; iSum += j; } int iTemp = i;
那最后iTemp的值就与i的值一样了。
为什么会这样呢?具体原因我也不清楚,可能是编译器的bug?或者多余的变量不能放在for循环里进行初始化?
最后我再重申一下,上面的测试是在debug模式中做的,Release没试过。有兴趣的同学可以自己用vs2013来试下
————————————————
版权声明:本文为CSDN博主「妙笔花生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sspdfn/article/details/73468302
题目:使用嵌套循环计算1!+2!+3!+...+100!
关于循环初始化:自己起初认为变量循环初始化在外层循环外面和里面没有什么区别,就将其放在了外层循环里面。侥幸运行正常。
而书里提到这个循环初始化语句放在不同位置会产生不同结果,如图,当将sum和item放在外层循环外时,计算结果是:1!+1!*2!+...+1!*2!*3!*...*100!.显然不是题目想要的结果。
出错原因是:循环初始化语句放错位置了。
避错:在进行嵌套语句初始化时要分清外层循环初始化与内层循环初始化。
转载于:https://www.cnblogs.com/lwufkye/p/8295819.html