黑马程序员技术交流社区
标题:
关于for循环流程控制
[打印本页]
作者:
波-wang
时间:
2014-4-21 18:32
标题:
关于for循环流程控制
本帖最后由 波-wang 于 2014-4-21 20:28 编辑
class Dest{
public static void main(String[] args) {
int c=20;
for(int a=c;a>0;a=a/2) {
for(int b=a;b>0;b--) {
if (b%2==0) c++; } }
System.out.println(c); }}
此语句的流程控制顺序是什么养的呢,运行了,结果是38,就是不知道具体是怎么运行的,怎么一步步到达这个结果的呢?
作者:
满兴旺
时间:
2014-4-21 19:33
本帖最后由 满兴旺 于 2014-4-21 19:34 编辑
class Test{
public static void main(String[] args)
{
int c=20;
for(int a=c;a>0;a=a/2)
{
System.out.println("a="+a+" ");
for(int b=a;b>0;b--)
{
if(b%2==0)
{
System.out.print("b="+b);
c++;
}
}
System.out.println();
}
System.out.println(c);
}
}
输出结果:
a.JPG
(23.57 KB, 下载次数: 1)
下载附件
2014-4-21 19:31 上传
有几个b c就加了几次。c=20+18=38
还有麻烦代码写专业点,我要是不缺技术分我就不答了
作者:
谢振宣
时间:
2014-4-21 19:48
class Dest
{
public static void main(String[] args)
{
int c = 20;
for (int a = c;a > 0;a = a/2)
{
for (int b = a;b > 0;b--)
{
if (b%2==0)
{
c++;
}
}
}
System.out.println(c);
}
}
/*
1.c = 20
2.将c赋值给a,让a参与循环,只要a>0,则a减半(第一个for循环的功能)
3.将每一次的a赋值给给b,让b参与循环,只要b>0,则b每循环一次就减1,
同时,当b是偶数时,让c加1(第二个for循环的功能)
4.最后输出c的最终取值
程序运行时是这样的:
1. c=20
2. a=20 b=20 c=21
3. a=20 b=19 c=21
4. a=20 b=18 c=22
5. a=20 b=17 c=22
6. a=20 b=16 c=23
7. a=20 b=15 c=23
8. a=20 b=14 c=24
9. a=20 b=13 c=24
10. a=20 b=12 c=25
11. a=20 b=11 c=25
12. a=20 b=10 c=26
13. a=20 b=9 c=26
14. a=20 b=8 c=27
15. a=20 b=7 c=27
16. a=20 b=6 c=28
17. a=20 b=5 c=28
18. a=20 b=4 c=29
19. a=20 b=3 c=29
20. a=20 b=2 c=30
21. a=20 b=1 c=30
22. a=10 b=10 c=31
23. a=10 b=9 c=31
24. a=10 b=8 c=32
25. a=10 b=7 c=32
26. a=10 b=6 c=33
27. a=10 b=5 c=33
28. a=10 b=4 c=34
29. a=10 b=3 c=34
30. a=10 b=2 c=35
31. a=10 b=1 c=35
32. a=5 b=5 c=35
33. a=5 b=4 c=36
34. a=5 b=3 c=36
35. a=5 b=2 c=37
36. a=5 b=1 c=37
37. a=2 b=2 c=38
38. a=2 b=1 c=38
39. a=1 b=1 c=38
40. 循环结束,输出结果:c=38
*/
复制代码
作者:
波-wang
时间:
2014-4-21 20:26
谢振宣 发表于 2014-4-21 19:48
很详细,看的明白,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2