关于流程控制语句,有这么几个很有趣的题目,大家一起来看看吧!

1. 

关于这道题其实很简单,第一行是一颗星,第二行是两颗星,第三行是三颗星,以此类推,很有规律,只需用两个嵌套的for循环就可以完成,让我们来看代码。

  1. for(int line=1;line<=7;line++){
  2. for(int i=1;i<=line;i++){
  3. System.out.print("*");
  4. }
  5. System.out.println();
  6. }

 

2.

这道题是上面那道题的升级版, 加了点难度,但其实也不难。分析过程写在代码里面。

  1. /* i j
  2. * 1 1
  3. ** 2 1 2
  4. *** 3 1 2 3
  5. **** 4 1 2 3 4
  6. ***** 5 1 2 3 4 5
  7. ****** 6 1 2 3 4 5 6
  8. ***** 7 1 2 3 4 5
  9. **** 8 1 2 3 4
  10. *** 9 1 2 3
  11. ** 10 1 2
  12. * 11 1
  13. j<=i && j<=12-i
  14. */
  15. for(int i=1;i<=11;i++){
  16. for(int j=1;j<=i&&j<=12-i;j++){
  17. System.out.print("*");
  18. }
  19. System.out.println();
  20. }

我们通过分析可以发现,前六行必须满足的规律是j<=i,但它同时也满足 j<=12-i,而后5行必须满足的规律是j<=12-i,但是它同时也满足j<=i,所以中间嵌套的for循环的条件是j<=i && j<=12-i。

 

3.

这道题跟前面两道题相比较,又增加了一点难度,把第二题转了个方向,这就意味着我们不仅仅要打印星星,还要打印星星前面的空格,空格数先依次递减,再递增。所以我们再打印星星之前要先打印空格。

  1. /* k=|i-6| |k| 当前行的最大的空格数
  2. k i j
  3. * -5 1 1
  4. ** -4 2 1 2
  5. *** -3 3 1 2 3
  6. **** -2 4 1 2 3 4
  7. ***** -1 5 1 2 3 4 5
  8. ****** 0 6 1 2 3 4 5 6
  9. ***** 1 7 1 2 3 4 5
  10. **** 2 8 1 2 3 4
  11. *** 3 9 1 2 3
  12. ** 4 10 1 2
  13. * 5 11 1
  14. */
  15. for(int i=1;i<=11;i++){
  16. for(int k=1;k<=Math.abs(i-6);k++){
  17. System.out.print(" ");
  18. }
  19. for(int j=1;j<=i&&j<=12-i;j++){
  20. System.out.print("*");
  21. }
  22. System.out.println();
  23. }

 

4.

这道题我们可以发现,这次不仅星星的最前面要打印空格,星星和星星中间也要打印空格,其实很简单,我们只需要在上个题目打印星星的后面加上一个空格就可以了。

  1. /* k=|i-6| |k| 当前行的最大的空格数
  2. k i j
  3. * -5 1 1
  4. * * -4 2 1 2
  5. * * * -3 3 1 2 3
  6. * * * * -2 4 1 2 3 4
  7. * * * * * -1 5 1 2 3 4 5
  8. * * * * * * 0 6 1 2 3 4 5 6
  9. * * * * * 1 7 1 2 3 4 5
  10. * * * * 2 8 1 2 3 4
  11. * * * 3 9 1 2 3
  12. * * 4 10 1 2
  13. * 5 11 1
  14. */
  15. for(int i=1;i<=11;i++){
  16. for(int k=1;k<=Math.abs(i-6);k++){
  17. System.out.print(" ");
  18. }
  19. for(int j=1;j<=i&&j<=12-i;j++){
  20. System.out.print("* ");
  21. }
  22. System.out.println();
  23. }

 

5.

这道题把中间的星星都去掉了,又增加了一点难度,这就意味着我们再打印星星的时候要判断,如果有星星的地方我们才打印星星,否则就打印空格。

  1. /* k=|i-6| |k| 当前行的最大的空格数
  2. k i j
  3. * -5 1 1
  4. * * -4 2 1 2
  5. * * -3 3 1 2 3
  6. * * -2 4 1 2 3 4
  7. * * -1 5 1 2 3 4 5
  8. * * 0 6 1 2 3 4 5 6
  9. * * 1 7 1 2 3 4 5
  10. * * 2 8 1 2 3 4
  11. * * 3 9 1 2 3
  12. * * 4 10 1 2
  13. * 5 11 1
  14. j==1 j==i j+i==12
  15. */
  16. for(int i=1;i<=11;i++){
  17. for(int k=1;k<=Math.abs(i-6);k++){
  18. System.out.print(" ");
  19. }
  20. for(int j=1;j<=i&&j<=12-i;j++){
  21. if(j==1||j==i||j+i==12){
  22. System.out.print("* ");
  23. }else{
  24. System.out.print(" ");
  25. }
  26. }
  27. System.out.println();
  28. }

 

怎么样,这些题是不是很有意思呢?我个人觉得它不但有意思还能锻炼你的熟练运用循环的能力,一举两得!