日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

string去掉后四位_数字黑洞(下):四位数的黑洞

發(fā)布時(shí)間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 string去掉后四位_数字黑洞(下):四位数的黑洞 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在上一期中我們展示了三位黑洞數(shù)的求解過程,其中的關(guān)鍵技術(shù)是數(shù)字的排序及位置交換。本期文章繼續(xù)討論有關(guān)數(shù)字黑洞的問題,展示四位黑洞數(shù)的求解過程。

一、用戶界面

在App Inventor開發(fā)環(huán)境中打開上一期創(chuàng)建的項(xiàng)目——數(shù)字黑洞1,在項(xiàng)目菜單中選擇“另存項(xiàng)目”,將項(xiàng)目名稱修改為“數(shù)字黑洞2”,如圖 1所示,保留項(xiàng)目中的全部組件。

圖1 將“數(shù)字黑洞1”項(xiàng)目另存為“數(shù)字黑洞2”

二、技術(shù)要點(diǎn)分析

在求解三位黑洞數(shù)時(shí),我們用局部變量(數(shù)1、數(shù)2、數(shù)3)保存三位數(shù)的三個(gè)數(shù)字,兩兩比較數(shù)的大小,根據(jù)比較結(jié)果決定是否將兩個(gè)數(shù)交換位置,這樣的處理過程需要3次比較,要編寫3組共9條指令,如圖 2所示,每組指令的格式相同。如果我們沿著同樣的思路,對四個(gè)數(shù)字進(jìn)行排序,那么就需要進(jìn)行6次比較,編寫6組共18條指令,同樣每組指令的格式相同。

圖2 三個(gè)條件語句中的代碼格式相同

作為一個(gè)開發(fā)者,我們不能允許程序中出現(xiàn)如此多的重復(fù)代碼,這些重復(fù)代碼不僅讓程序變得臃腫,而且當(dāng)這部分代碼需要修改時(shí),極易給程序帶來錯(cuò)誤,例如由于疏忽忘記了修改其中的部分代碼。

解決這一問題的關(guān)鍵技術(shù)有兩點(diǎn)——列表與循環(huán)。將四位數(shù)的四個(gè)數(shù)字轉(zhuǎn)換為列表,利用循環(huán)語句,對列表項(xiàng)進(jìn)行兩兩比較,通過交換列表項(xiàng)的位置,來實(shí)現(xiàn)數(shù)字的排序。這也是解決大量數(shù)字排序問題的通用方法,例如,對班級考試成績進(jìn)行排序。

三、編寫程序

將開發(fā)工具切換到編程視圖,保留項(xiàng)目中的部分代碼,將最大值、最小值過程刪除,如圖 3所示。

圖3 保留項(xiàng)目中的部分代碼

1、定義過程——數(shù)字轉(zhuǎn)列表、列表轉(zhuǎn)數(shù)字

為了利用列表和循環(huán)語句簡化排序代碼,首先需要將數(shù)字轉(zhuǎn)化為列表,待排序完成后,再將列表轉(zhuǎn)為數(shù)字,這樣才能進(jìn)行減法運(yùn)算。代碼如圖 4及圖 5所示。

圖4 定義過程——數(shù)字轉(zhuǎn)列表

圖5 定義過程——列表轉(zhuǎn)數(shù)字

2、定義過程——極值

在數(shù)學(xué)語言中,最大值、最小值統(tǒng)稱為“極值”,這里定義一個(gè)有返回值的過程——極值,來取代最大值、最小值兩個(gè)過程,代碼如圖 6所示。

圖6 定義過程——極值

極值過程里使用了雙層循環(huán),外層循環(huán)變量“外層序號”的取值為1~3,內(nèi)層循環(huán)變量“內(nèi)層序號”的起始值為(外層序號+1),終止值為4,所有指令都包含在內(nèi)層循環(huán)中。首先取出數(shù)字列表中的第1項(xiàng),與后面3項(xiàng)進(jìn)行兩兩比較,并交換位置,當(dāng)?shù)?次內(nèi)層循環(huán)(共執(zhí)行3次)結(jié)束時(shí),列表中的第1項(xiàng)為四個(gè)數(shù)字中的最大數(shù)或最小數(shù)。接下來取出列表中的第2項(xiàng),與后面兩項(xiàng)進(jìn)行比較并交換位置,當(dāng)?shù)?次內(nèi)層循環(huán)(共執(zhí)行2次)結(jié)束時(shí),列表中的第2項(xiàng)為后三位數(shù)中的最大值或最小值,以此類推,當(dāng)兩層循環(huán)全部結(jié)束時(shí),數(shù)字列表的排序完成。

注意:在交換兩個(gè)列表項(xiàng)的位置時(shí),同樣需要一個(gè)臨時(shí)變量,先將前數(shù)保存在臨時(shí)變量中,然后用后數(shù)替換前數(shù)所對應(yīng)的列表項(xiàng),最后再用臨時(shí)變量替換后數(shù)所對應(yīng)的列表項(xiàng)。

極值過程里還使用了有返回值的條件語句,如果參數(shù)“極大”=真,則交換位置的條件為“前數(shù)后數(shù)”,并返回極小值列表。

3、改造過程——求差運(yùn)算

首先將求差運(yùn)算的“三位數(shù)”參數(shù)修改為“數(shù)字列表”,通過調(diào)用極值過程,求得四位數(shù)的最大值和最小值,再求兩者的差值并拼接輸出字串,比較差值與黑洞數(shù)(全局變量),如果差值不等于黑洞數(shù),則繼續(xù)調(diào)用求差運(yùn)算過程(遞歸調(diào)用),直到差值與黑洞數(shù)相等,然后將輸出字串顯示在標(biāo)簽中。代碼如圖 7所示。

圖7 改造之后的求差運(yùn)算過程

4、改造求解按鈕的事件處理程序

在求差運(yùn)算過程中,第一個(gè)參數(shù)的數(shù)據(jù)類型由數(shù)字改成了列表,因此,在求解按鈕的點(diǎn)擊事件中,在調(diào)用求差運(yùn)算過程時(shí),要為過程提供列表類型的參數(shù),此處利用數(shù)字轉(zhuǎn)列表過程,將數(shù)字變?yōu)閿?shù)字列表,代碼如圖 8所示。

圖8 改造之后的點(diǎn)擊事件處理程序

對上述代碼進(jìn)行測試,測試結(jié)果如圖 9所示。

圖9 測試:四位黑洞數(shù)的求解過程

四、討論

讀者可能有疑問:圖 7的求差運(yùn)算過程里,在求最大值時(shí),用“復(fù)制列表+數(shù)字列表”塊作為極值過程的參數(shù),而在求最小值時(shí),則直接用“數(shù)字列表”作為參數(shù),為什么會(huì)有這樣的差別呢?我們先來做一個(gè)實(shí)驗(yàn),將求差運(yùn)算過程修改一下,代碼及測試結(jié)果如圖 10所示,最大值與最小值都成了最小值,這是什么原因呢?

圖10 去掉“復(fù)制列表”塊時(shí)的測試結(jié)果

原因在于列表類型數(shù)據(jù)的存儲(chǔ)方式。簡單類型的變量,如黑洞數(shù),其中保存的是具體的數(shù),如6193,而列表類型的變量,如參數(shù)“數(shù)字列表”(參數(shù)等同于變量),其中保存的不是具體的數(shù)據(jù),而是數(shù)據(jù)存放的地址。舉例來說,假設(shè)列表A、列表B為變量名,經(jīng)過下列操作:

  • 1.?????? 設(shè)列表A = (6 1 9 3)

  • 2.?????? 設(shè)列表B = 列表A

  • 3.?????? 設(shè)列表B = (9 6 3 1)

  • 此時(shí)查看列表A的值,會(huì)發(fā)現(xiàn)列表A也變成了(9 6 3 1)。

    也就是說,第2步操作并沒有真正生成一個(gè)變量,只是為“列表A”貼了一個(gè)“列表B”的標(biāo)簽,它們指向的是同一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)域,因此,對列表B的改寫,同時(shí)也發(fā)生在列表A之上。

    回到求差運(yùn)算過程里,求差運(yùn)算的參數(shù)“數(shù)字列表”、過程里的局部變量最大值、最小值,這三者指向的是同一個(gè)存儲(chǔ)區(qū)域,而“復(fù)制列表”塊所起的作用,是另外開辟一個(gè)存儲(chǔ)區(qū)域,將“數(shù)字列表”的值復(fù)制到新區(qū)域中,因此求得的最大值保存在新區(qū)域中,而最小值其實(shí)是保存在參數(shù)“數(shù)字列表”所在的區(qū)域中。這就是使用“復(fù)制列表”塊的緣由。

    注:本文已正式發(fā)表于《愛上機(jī)器人》雜志總第4期(2019.01)。

    總結(jié)

    以上是生活随笔為你收集整理的string去掉后四位_数字黑洞(下):四位数的黑洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。