h1688i 發問時間: 電腦與網際網路程式設計 · 1 0 年前

c語言 陣列問題

#include <stdio.h>

void main()

{

int a[100], i;

for(i=0; i<100; i++) 第一個迴圈是做儲存的動作一百次,並再第一百次時跳出迴圈

scanf("%d",&a[i]);

for(i=99; i>=0; i--)第二個迴圈是99的值遞減同時印出來,遞減至0時跳出迴圈

printf("%d\n",a[i]);變數裡的a[i]已經被宣告為a[100]???

為甚麼第二個迴圈i要設為99而不是100???

}

不曉得這樣的邏輯解釋的對不對???

有誤的話麻煩請幫我更正 感激不盡

我是初學者請多多指教

3 個解答

評分
  • 1 0 年前
    最佳解答

    int a[100] 係宣告一個int 陣列,內含100個元素。

    C的陣列元素編號是從 0 開始,

    因此 int a[100]所產生的陣列範圍是:a[0]~a[99]。

    第一個迴圈,i由0開始,至i<100,

    展開來看,即i由0至99,在宣告的範圍內,完全合法。

    第一個迴圈,i由99開始,至i>=0,

    展開來看,即i由99至0,同樣在宣告的範圍內,也完全合法。

    C的陣列元素編號是從 0 開始,是本題解惑的關鍵。

    2009-11-24 03:34:54 補充:

    更正筆誤:

    第「二」個迴圈,i由99開始......

  • 1 0 年前

    東邪無弓 大師的回答非常對,

    如果您是剛學習C語言的話,

    您應該去翻一下書籍,

    會有提到相關的知識,

    包括可能是這個問題的解答(大致上,會和東邪無弓大師的解釋一樣)

    也會教導您有關陣列的應用、還有字串陣列的用法...等。

    在 駭客與畫家 一本書提到,

    您不妨使用您對程式的想法去實際的寫出並編譯,

    在除錯的過程中, 您會獲得更多。

  • 1 0 年前

    請搞懂<= 跟 <  ,  >=跟>

    因為<是小於 (小於100的話是表示到99就結束了,因為100不會小於99阿!)

    所以第一個LOOP是 i = 0 到 i = 99 i++ (0~99有100個哦)

    因為>=是小於等於 (大於等於0的話連0也算哦)

    第二個LOOP是 i = 99 到 i = 0 i-- (也是100個)

    建議你for loop裡面中間的位置 盡量別用<跟>,

    最好都統一使用<=跟>=

    有問題的話再補充!

    參考資料: 自己
還有問題?馬上發問,尋求解答。