亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

二重循環解題思路-顏群

發布時間:2020-07-15 19:56:53 來源:網絡 閱讀:342 作者:藍神100 欄目:開發技術

本文通過一道習題,講解做二重循環習題的思路:

 

題目:使用二重循環打印如下圖形:

二重循環解題思路-顏群

分析:首先要明確我們需要打印的種類有:字符串*,字符串  (空格)。比如第一行,先打印了4個空格  ,然后打印了一個* 

我們分析一下每行的具體打印情況:

二重循環解題思路-顏群 

0行:先打印4個空格,然后打印1*

1行:先打印3個空格,然后打印3*

2行:先打印2個空格,然后打印5*

3行:先打印1個空格,然后打印7*

4行:先打印0個空格,然后打印9*

 

通過上面分析,我們不難發現,0, ”1”… ”4這些行數在重復,所以我們可以用外層循環控制行數(即打印第幾行)。在每行的內部,打印n個空格又是一個重復的過程,所以可以用內層循環來控制打印空格的個數。同理,在每行的內部,打印n*也是一個重復的過程,所以可以用內層循環來控制打印*的個數。即:用外層循環控制打印的行數,用兩個內層循環分別控制打印空格的個數和打印*的個數。還要注意,在把每行的空格和*打印完后,還需要換行。

即可得偽代碼:

public static void main(String[] args) {

int rows = 5;

for (int i = 0; i < 行數; i++) {

for (int j = 0; j < 空格的個數; j++) {

System.out.print(" ");

}

for (int j = 0; j < "*"的個數; j++) {

System.out.print("*");

}

System.out.println();//每行的空格和”*”打印完后,需要換行

}

}

 

我們在用i表示行數(第幾行),用j表示打印空格的個數,用k表示打印*的個數,可得下表:

二重循環解題思路-顏群 

分析外層循環和內層循環的數學關系,可得:

i+j=4 j=4-i=(rows-1)-i, 即空格的個數等于:(當前行數-1)-i

k=2*i+1 ,即*的個數等于: 2*當前行數+1

現在,用計算后的關系式將偽代碼中的漢字替換,即可實現等腰三角形的打印:

public static void main(String[] args) throws Exception {

int rows = 5;

for (int i = 0; i < rows; i++) {

for (int j = 0; j < rows - i - 1; j++) {

System.out.print(" ");

}

for (int j = 0; j < 2 * i + 1; j++) {

System.out.print("*");

}

System.out.println();//每行的空格和”*”打印完后,需要換行

}

}

運行結果:

二重循環解題思路-顏群 

 

思考:現將題目變為:打印倒等腰三角形,如圖:

二重循環解題思路-顏群 

該如何實現呢?

分析:對比“正等腰三角形”和“倒等腰三角形”,如下

二重循環解題思路-顏群 

不難發現,“倒等腰三角形”的第0行,就是“正等腰三角形”的最后一行;“倒等腰三角形”的第1行,就是“正等腰三角形”的倒數第二一行;“倒等腰三角形”的最后一行,就是“正等腰三角形”的第一行。即:把“正等腰三角形”的行數逆序輸出,就變成了“倒等腰三角形”。控制“正等腰三角形”行數的是外層循環for (int i = 0; i < rows; i++),將它逆序輸出,即改為for (int i = rows-1; i>=0; i--),就實現了“倒等腰三角形”的打印,如下:

public static void main(String[] args) throws Exception {

int rows = 5;

// for (int i = 0; i < rows; i++)正等腰三角形

for (int i = rows - 1; i >= 0; i--) {// 正等腰三角形等行數逆序輸出

for (int j = 0; j < rows - i - 1; j++) {

System.out.print(" ");

}

for (int j = 0; j < 2 * i + 1; j++) {

System.out.print("*");

}

System.out.println();// 每行的空格和”*”打印完后,需要換行

}

}

運行結果:

二重循環解題思路-顏群 

 

思考:現將題目變為:打印菱形,如圖:

二重循環解題思路-顏群 

該如何實現呢?

分析:

將菱形上下拆開、一分為二,即可分為“正等腰三角形”和“到等腰三角形”,如圖:

二重循環解題思路-顏群 

因此,只需要先打印“正等腰三角形”,然后再打印“到等腰三角形”即可。需要注意,菱形的中間那一行,既是“正等腰三角形”的最后一行,同時也是“倒等腰三角形”的第一行。因此,在打印“正等腰三角形”時,不需要打印最后一行,如下:

public static void main(String[] args) throws Exception {

int rows = 5;

// 正等腰三角形

//for (int i = 0; i < rows; i++) {

for (int i = 0; i < rows-1; i++) {//for的第二個參數從row變為row-1,即無需打印"正等腰三角形"的最后一行

for (int j = 0; j < rows - i - 1; j++) {

System.out.print(" ");

}

for (int j = 0; j < 2 * i + 1; j++) {

System.out.print("*");

}

System.out.println();// 每行的空格和”*”打印完后,需要換行

}

// 倒等腰三角形

for (int i = rows - 1; i >= 0; i--) {// 正等腰三角形等行數逆序輸出

for (int j = 0; j < rows - i - 1; j++) {

System.out.print(" ");

}

for (int j = 0; j < 2 * i + 1; j++) {

System.out.print("*");

}

System.out.println();// 每行的空格和”*”打印完后,需要換行

}

}

運行結果:

二重循環解題思路-顏群 

 

思考:

現將題目變為:打印空心菱形,如圖:

二重循環解題思路-顏群 

該如何實現呢?

分析:

 二重循環解題思路-顏群

實心菱形與空心菱形的區別是:空心菱形就是實心菱形的邊界,如下圖:

二重循環解題思路-顏群

即在打印“實心菱形”的“*”時,只需要把每一行“*”的開頭第一個“*”和結尾最后一個“*”打印出來,每行中間部分的“*”用空格替代即可。即對System.out.print("*");進行判斷,偽代碼如下:

if (開頭第一個*” 或 結尾最后一個“*) {

System.out.print("*");

} else {//即中間部分打印空格

System.out.print(" ");

}

完整代碼如下:

public static void main(String[] args) throws Exception {

int rows = 5;

// 正等腰三角形

for (int i = 0; i < rows; i++) {

for (int j = 0; j < rows - i - 1; j++) {

System.out.print(" ");

}

for (int j = 0; j < 2 * i + 1; j++) {

if (j == 0 || j == 2 * i) {//開頭第一個“*” 或 結尾最后一個“*”

System.out.print("*");

} else {//即中間部分打印空格

System.out.print(" ");

}

}

System.out.println();// 每行的空格和”*”打印完后,需要換行

}

// 倒等腰三角形

// for (int i = rows - 1; i >= 0; i--) {

for (int i = rows - 2; i >= 0; i--) {// “倒等腰三角形的第0行(即rows-1)不用打,直接從第1(rows-2)開始打印

for (int j = 0; j < rows - i - 1; j++) {

System.out.print(" ");

}

for (int j = 0; j < 2 * i + 1; j++) {

if (j == 0 || j == 2 * i) {//開頭第一個“*” 或 結尾最后一個“*”

System.out.print("*");

} else {//即中間部分打印空格

System.out.print(" ");

}

}

System.out.println();// 每行的空格和”*”打印完后,需要換行

}

}

運行結果:

二重循環解題思路-顏群 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大庆市| 集贤县| 台前县| 海宁市| 呼伦贝尔市| 仁化县| 克什克腾旗| 镇康县| 虹口区| 曲水县| 鹰潭市| 祁连县| 洮南市| 墨玉县| 黎城县| 富阳市| 马龙县| 桃园市| 故城县| 安新县| 东乡族自治县| 门源| 丰原市| 新安县| 奇台县| 博野县| 绩溪县| 新龙县| 独山县| 读书| 花莲市| 福清市| 徐闻县| 武鸣县| 云南省| 石门县| 利辛县| 富裕县| 务川| 观塘区| 马山县|