关于流程控制语句,有这么几个很有趣的题目,大家一起来看看吧!
1.
关于这道题其实很简单,第一行是一颗星,第二行是两颗星,第三行是三颗星,以此类推,很有规律,只需用两个嵌套的for循环就可以完成,让我们来看代码。
for(int line=1;line<=7;line++){
for(int i=1;i<=line;i++){
System.out.print("*");
}
System.out.println();
}
2.
这道题是上面那道题的升级版, 加了点难度,但其实也不难。分析过程写在代码里面。
/* i j
* 1 1
** 2 1 2
*** 3 1 2 3
**** 4 1 2 3 4
***** 5 1 2 3 4 5
****** 6 1 2 3 4 5 6
***** 7 1 2 3 4 5
**** 8 1 2 3 4
*** 9 1 2 3
** 10 1 2
* 11 1
j<=i && j<=12-i
*/
for(int i=1;i<=11;i++){
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
我们通过分析可以发现,前六行必须满足的规律是j<=i,但它同时也满足 j<=12-i,而后5行必须满足的规律是j<=12-i,但是它同时也满足j<=i,所以中间嵌套的for循环的条件是j<=i && j<=12-i。
3.
这道题跟前面两道题相比较,又增加了一点难度,把第二题转了个方向,这就意味着我们不仅仅要打印星星,还要打印星星前面的空格,空格数先依次递减,再递增。所以我们再打印星星之前要先打印空格。
/* k=|i-6| |k| 当前行的最大的空格数
k i j
* -5 1 1
** -4 2 1 2
*** -3 3 1 2 3
**** -2 4 1 2 3 4
***** -1 5 1 2 3 4 5
****** 0 6 1 2 3 4 5 6
***** 1 7 1 2 3 4 5
**** 2 8 1 2 3 4
*** 3 9 1 2 3
** 4 10 1 2
* 5 11 1
*/
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
4.
这道题我们可以发现,这次不仅星星的最前面要打印空格,星星和星星中间也要打印空格,其实很简单,我们只需要在上个题目打印星星的后面加上一个空格就可以了。
/* k=|i-6| |k| 当前行的最大的空格数
k i j
* -5 1 1
* * -4 2 1 2
* * * -3 3 1 2 3
* * * * -2 4 1 2 3 4
* * * * * -1 5 1 2 3 4 5
* * * * * * 0 6 1 2 3 4 5 6
* * * * * 1 7 1 2 3 4 5
* * * * 2 8 1 2 3 4
* * * 3 9 1 2 3
* * 4 10 1 2
* 5 11 1
*/
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("* ");
}
System.out.println();
}
5.
这道题把中间的星星都去掉了,又增加了一点难度,这就意味着我们再打印星星的时候要判断,如果有星星的地方我们才打印星星,否则就打印空格。
/* k=|i-6| |k| 当前行的最大的空格数
k i j
* -5 1 1
* * -4 2 1 2
* * -3 3 1 2 3
* * -2 4 1 2 3 4
* * -1 5 1 2 3 4 5
* * 0 6 1 2 3 4 5 6
* * 1 7 1 2 3 4 5
* * 2 8 1 2 3 4
* * 3 9 1 2 3
* * 4 10 1 2
* 5 11 1
j==1 j==i j+i==12
*/
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
if(j==1||j==i||j+i==12){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
怎么样,这些题是不是很有意思呢?我个人觉得它不但有意思还能锻炼你的熟练运用循环的能力,一举两得!