Board logo

主題: [資訊電機] [求助]關於這段QB [打印本頁]

發表人: 45326565    時間: 2005-4-10 05:27 PM     主題: [求助]關於這段QB

程式:
DIM A(5)
FOR I = 1 TO 5
READ A(I)
NEXT I
FOR I = 1 TO 4
FOR J = 5 TO I + 1 SETP - 1
IF A(J) > A(J-1) THEN SWAP A(J),A(J-1)
NEXT J
NEXT I
PRINT A(1);A(2);A(3);A(4);A(5)
DATA 4,1,5,2,3
END
請問各位大大這段做出來的A(1),A(2),A(3),A(4),A(5)之值為何?
這段是歷屆考題.小弟看了半天還是看不太出來
跑到SWAP這一段就亂掉了.希望有玩的人可以幫小弟做詳解
發表人: Acute    時間: 2005-4-10 05:36 PM

把程式輸入, 執行一次, 不就知道答案了

Acute.
發表人: shiuh    時間: 2005-4-10 06:10 PM

QB 還有人記得嗎?
發表人: shiuh    時間: 2005-4-10 06:12 PM

基本上是做大小排序吧
這樣不 用看了吧..
發表人: 45326565    時間: 2005-4-10 06:42 PM

..QB執行程式不知道被我丟去那了
比較搞不懂的地方就是
IF A(J) > A(J-1) THEN SWAP A(J),A(J-1)
這一段.不知道該怎麼換比較好
發表人: Acute    時間: 2005-4-10 07:12 PM

當A(j) 大於A(j-1) 就把A(j) 跟A(j-1) 互換
那一行的意思就是這樣

Acute.
發表人: 45326565    時間: 2005-4-10 07:23 PM

FOR I = 1 TO 4
FOR J = 5 TO I + 1 STEP - 1
這一段所執行的的動作是指所有數都要-1
EX:I = 1
J = 5 TO 1 STEP - 1 =(5-1).(4-1).(3-1).(2-1).(1-1)=4.3.2.1
是這樣嗎
最後一行的DATA不是通常都要擺在前面嗎
擺在後面的話陣列數值還是4.1.5.2.3嗎
如果我放J=1進去的話.以下面這一段來看
IF A(J)>A(J-1) THEN SWAP A(J),A(J-1)
A(1)>A(0) 那...A(0)不是沒數值嗎.還是要放0進去換.

[45326565 在 2005-4-10 08:16 PM 作了最後編輯]
發表人: innova    時間: 2005-4-11 05:17 AM


引用:
45326565寫到:
FOR I = 1 TO 4
FOR J = 5 TO I + 1 STEP - 1
這一段所執行的的動作是指所有數都要-1
EX:I = 1
J = 5 TO 1 STEP - 1 =(5-1).(4-1).(3-1).(2-1).(1-1)=4.3.2.1
是這樣嗎
最後一行的DATA不是通常都要擺在前面嗎
擺在後面的話陣列數值還是4.1.5.2.3嗎
如果我放J=1進去的話.以下面這一段來看
IF A(J)>A(J-1) THEN SWAP A(J),A(J-1)
A(1)>A(0) 那...A(0)不是沒數值嗎.還是要放0進去換.

[45326565 在 2005-4-10 08:16 PM 作了最後編輯]

J 不可能 =1
why?
因為 I="1" TO 4
所以  I 最小 =1
可是 J=5 TO "I + 1"
所以 J 最小= "I最小 + 1" = "1 + 1" = "2"

瞭?

.AND.
"DATA" 放前面 放後面
對於 "READ" 來說 並沒有影響!
"READ"動作 自己會去找 程式裡面第一個出現的 "DATA" 並繼續往下搜尋
直到找不到 "DATA"為止!

...所以... 你的  "DATA" 可以比你的 "READ" 要多!
但是, 你的 "READ" 卻絕不可以比 "DATA"少! (程式跑一半 會出現錯誤, 並停止執行!)

[innova 在 2005-4-11 05:21 AM 作了最後編輯]
發表人: 45326565    時間: 2005-4-11 05:49 AM

那STEP-1該怎麼執行.到底是那個地方-1
發表人: innova    時間: 2005-4-11 06:57 AM


引用:
45326565寫到:
那STEP-1該怎麼執行.到底是那個地方-1

???
"STEP-1" 意思就是說: 這個 For迴圈 每次會增加 "-1"

同理, 如果 程式寫:
FOR a = 1 to 99 STEP 2
那  a 每次就會增加 "2" (a=1,3,5,7,9,...99)
FOR b = 100 to 0 STEP -5
那  b 每次就會增加 "-5"
b= 100,95,90,85,80,....10,5,0

其實 你的
"FOR I=1 to 5"
他是讓你省略了 後面的 "STEP 1" 這一句 (因為 "STEP 1" 的情況太多!??)


瞭?
發表人: 45326565    時間: 2005-4-11 08:20 PM

感謝各位大大的解答.我已經搞懂了.之前一直把STEP-1想成是數列全部-1.難怪會解不出來
送上鮮花表示謝意
發表人: innova    時間: 2005-4-12 11:15 AM

BASIC 語言 是相當 口語化 的語言
step 是 步進 的意思
每走一步(每一次迴圈) 就會增加多少

其他許多Keyword 有空 不妨查一下字典 看看他的意思
順便 可以學學英文...

加油~




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0