2014-11-03 58 views
1

我正在編寫一本教科書,並且無法理解數組。我在看一個練習題,很困惑。for循環中的整數數組?

  1. 聲明一個包含前五個素數的整數數組。 這將是int[]primes = {2,3,5,7,11}

  2. 假設數組'素數'已被初始化。執行以下循環後它包含什麼?

    for(int i = 0; i < 2; i++) { primes[4 - i] = primes[i]; }

教科書給出了這個...答案{2,3,5,3,2}任何人都可以解釋這是如何循環的作品?

+0

你到底明白了什麼? – Eran 2014-11-03 18:37:00

+0

你的數組的索引號是指數組中的每個元素,就像街道地址指的是房子。看循環:我是索引。應用簡單替代(高中代數)。如果我從0開始,用零重寫公式,並試着想一想你會得到什麼。畢竟,在學校裏學習代數是一個重點。 – MarsAtomic 2014-11-03 18:40:17

+0

我遵循循環如何產生前兩個數字(2,3),但我不明白數組的其餘部分是如何產生的(5,3,2)。 – javastudent 2014-11-03 18:43:22

回答

0

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個字段不被改變,就在第四和第五

0

似乎就像你不明白for循環那樣,因爲這是一個非常簡單的例子。 For循環基本上是迭代數據結構的代碼中的捷徑。您可以逐行輸入循環,但它們會更長。在這個例子中,

for (int i = 0; i < 2; i++) 
{ 
    primes[4 - i] = primes[i]; 
} 

變爲:

primes[4 - 0] = primes[0]; 
primes[4 - 1] = primes[1]; 

因此,所有這種循環正在做的是設置在陣列到第一的最後一個元素,並且所述第二到最後一個元素到第二。

+0

它不執行'2';那將是'我<= 2;'而不是'我<2;'。 – bcsb1001 2014-11-03 18:42:46

+0

你說得對。修復。 – 2014-11-03 18:43:33

0

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

我想你理解練習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])。

請記住,數組索引爲零。希望這有助於。

0

想象一下,你有一個動物園(內存)與一排彼此相鄰的籠(數組)。每個籠子是你去購買一些初始資金,以保持動物(如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    
------------------------ 

這就是數組如何工作的基元。對於動物園裏的物體而不是籠子,你只需要一張地圖,指向你可以在動物園中找到動物的地方。任何不在名單上的動物都會被打上標籤並橫掃野外,釋放動物園中的空間。