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 個解答
- 東邪無弓Lv 71 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裡面中間的位置 盡量別用<跟>,
最好都統一使用<=跟>=
有問題的話再補充!
參考資料: 自己