我正在編寫一本教科書,並且無法理解數組。我在看一個練習題,很困惑。for循環中的整數數組?
聲明一個包含前五個素數的整數數組。 這將是
int[]primes = {2,3,5,7,11}
假設數組'素數'已被初始化。執行以下循環後它包含什麼?
for(int i = 0; i < 2; i++) { primes[4 - i] = primes[i]; }
教科書給出了這個...答案{2,3,5,3,2}
任何人都可以解釋這是如何循環的作品?
我正在編寫一本教科書,並且無法理解數組。我在看一個練習題,很困惑。for循環中的整數數組?
聲明一個包含前五個素數的整數數組。 這將是int[]primes = {2,3,5,7,11}
假設數組'素數'已被初始化。執行以下循環後它包含什麼?
for(int i = 0; i < 2; i++) { primes[4 - i] = primes[i]; }
教科書給出了這個...答案{2,3,5,3,2}
任何人都可以解釋這是如何循環的作品?
for循環exceutes兩次,對於i = 0且i = 1
primes[4-0] = primes[0] = 2 -> primes[4] = 2
primes[4-1] = primes[1] = 3 -> primes[3] = 3
所以在陣列中的第一個3個字段不被改變,就在第四和第五
似乎就像你不明白for
循環那樣,因爲這是一個非常簡單的例子。 For循環基本上是迭代數據結構的代碼中的捷徑。您可以逐行輸入循環,但它們會更長。在這個例子中,
for (int i = 0; i < 2; i++)
{
primes[4 - i] = primes[i];
}
變爲:
primes[4 - 0] = primes[0];
primes[4 - 1] = primes[1];
因此,所有這種循環正在做的是設置在陣列到第一的最後一個元素,並且所述第二到最後一個元素到第二。
它不執行'2';那將是'我<= 2;'而不是'我<2;'。 – bcsb1001 2014-11-03 18:42:46
你說得對。修復。 – 2014-11-03 18:43:33
與
int[]primes = {2,3,5,7,11}
for循環工作原理是這樣
i=0 -> primes[4-0] = primes[0]; //array {2,3,5,7,2}
i=1 -> primes[4-1] = primes[1]; //array {2,3,5,3,2}
我想你理解練習1.練習2起,環
for (int i = 0; i < 2; i++)
迭代兩次:一次在i = 0,一次在i = 1。在i = 2時,條件i < 2被破壞,循環不執行。
的代碼循環
primes[4-i] = primes[i];
內的實際線路設置在陣列中的4-第i個元素等於所述陣列中的第i個元素。
初始化中,陣列是素數{2,3,5,7,11}
一個循環後,將陣列素數是{2,3,5,7,2}(primes[4] = primes[0]
已經執行) 。
在兩個循環之後,數組素數是{2,3,5,3,2}(已執行primes[3] = primes[1]
)。
請記住,數組索引爲零。希望這有助於。
想象一下,你有一個動物園(內存)與一排彼此相鄰的籠(數組)。每個籠子是你去購買一些初始資金,以保持動物(如int
數據類型)
Zoo---------------------
[animal][animal][animal][animal][animal]
------------------------
您決定來標記每個籠子與一些(指數)
Zoo---------------------
[animal][animal][animal][animal][animal]
0 1 2 3 4
------------------------
所需的準確大小動物爲你的籠子(初始化陣列)。所以你買一個斑馬,熊貓,貓頭鷹,老虎和一隻熊,並把它們放進籠子裏。您購買動物的順序是您將它們放入籠中的順序。
Zoo---------------------
[Zebra][Panda][Owl][Tiger][Bear]
0 1 2 3 4
------------------------
你的動物園只是完善了克隆,所以你可以製作動物的副本。你決定人們真的很享受熊貓&斑馬,但不關心老虎和熊。您可以通過順序堆疊索引卡片(循環)來委託您的任務(算法)。每個索引卡有一個頁碼從0上升到小於2,那麼您的最後一個索引卡有頁碼1
_________________________ ___________________________
|0 | |1 |
| | | |
| | | |
| | | |
| | | |
|_________________________| |___________________________|
你愛的號碼4,並認爲它是更好的方式則任何數量和應作爲計數的起點而不是數字0.因此,您將所有使用數字4的指令作爲參考點。
_____________________________ _____________________________
|0 | |1 |
|Yo zoo keeper, | |Yo zoo keeper, |
|Copy the animal | |Copy the animal |
|in the cage that has this | |in the cage that has this |
|card number and put it in | |card number and put it in |
|cage 4 minus this card number| |cage 4 minus this card number|
|-The Boss | |-The Boss |
|_____________________________| |_____________________________|
您的動物園飼養員讀取第一張索引卡片(編號爲0)。他製作了一張斑馬的副本,並將熊與熊籠在一起。斑馬馬上吃熊,是籠子裏唯一的居民。
Zoo---------------------
[Zebra][Panda][Owl][Tiger][Zebra]
0 1 2 3 4
------------------------
您的動物園飼養員讀取第二張索引卡片(編號爲1)。他製作了熊貓的副本,並與老虎放在一起。熊貓立即吃老虎,並且是籠子裏唯一的居民。
Zoo---------------------
[Zebra][Panda][Owl][Panda][Zebra]
0 1 2 3 4
------------------------
這就是數組如何工作的基元。對於動物園裏的物體而不是籠子,你只需要一張地圖,指向你可以在動物園中找到動物的地方。任何不在名單上的動物都會被打上標籤並橫掃野外,釋放動物園中的空間。
你到底明白了什麼? – Eran 2014-11-03 18:37:00
你的數組的索引號是指數組中的每個元素,就像街道地址指的是房子。看循環:我是索引。應用簡單替代(高中代數)。如果我從0開始,用零重寫公式,並試着想一想你會得到什麼。畢竟,在學校裏學習代數是一個重點。 – MarsAtomic 2014-11-03 18:40:17
我遵循循環如何產生前兩個數字(2,3),但我不明白數組的其餘部分是如何產生的(5,3,2)。 – javastudent 2014-11-03 18:43:22