Free Pascal~Help!!急!!

2012-01-01 6:14 am
1) It is given that x mod y returns the remainder of x divided by y. For example,
5 mod 3 = 2, 17 mod 10 = 7, 6 mod 2 = 0, 2 mod 11 = 2. State the outputs of the following program.

program q3;
var i,x:integer;
begin
x:=38;
writeln('i':5,'x':5);
for i:=11 to 14 do
begin
x:=x mod i;
x:=x*x;
writeln(i:5 ,x:5);
end;
readln;
end.

我已經用pascal run 過個program 架啦,揾到個答案係︰
i=11 x=25
i=12 x=1
i=13 x=1
i=14 x=1

但係我exam 既時候係做paper 架,唔可以用pascal run ,可唔可以解釋吓究竟個program 係揾D咩野架?仲有我要點揾D outputs 呀?
點解當i=12,13,14 個陣,x 會係1既?
仲有i:5 & x:5 係點解呀?同x:0:1 有咩分別呀?

2)
program q1;
var x, y, z : real;
begin
readln(x,y,z);
if (x > y) and (x < z) then x := x + (z - y)/2;
if (x > z) and (x < y) then x := x + (y - z)/2;
if (x = y) and (x < z) then begin x := z/2 ; y := z/2; z := 0 end;
if (x = z) and (x < y) then begin x := y/2 ; z := y/2; y := 0 end;
if (x = y) and (x = z) then begin x := y + z; y := x - z end;
writeln(x :4:1, y :4:1, z :4:1);
readln;
end.

State the output values of x, y and z if x, y and z are inputted as follows:
input output
a) x = 1, y = 2, z = 6 x = _ 1.0__, y = __2.0__, z = _6.0_
b) x = 3, y = 2, z = 1 x = __3.0__, y = __2.0__, z = __1.0_
c) x = 2, y = 5, z = 2 x = __2.5__, y = __0.0 , z = __2.5_
d) x = 3, y = 3, z = 3 x = __6.0__, y = __3.0__, z = __3.0_
我想問吓係唔係當input 個D 數,唔符合program 寫既任何一個情況,output 就照寫番input 個堆數呀?仲有x:4:1 即係咩意思呀?
Exam 就到啦! 請各位好心人教教我! 萬分感激!

回答 (1)

2012-01-01 8:01 am
✔ 最佳答案
『吓究竟個program 係揾D咩野架?』
其實係冇實際用途。只係測試下同學明唔明。
『仲有我要點揾D outputs 呀?』
一點秘密都冇。用個腦跟住個logic行就得。
程式本身有冇義意都冇要緊,一步步跟住諗。
即係話你唔明一句都會唔掂。

『仲有i:5 & x:5 係點解呀?』
Writeln係pascal的輸出,有冒號係做formating,即係一定會佔幾個字。
(對程式個logic無關)。i:5即係一定會佔五個字元位置。例如當i係0-9時,前面會加4個space。i係10-99時會加3個space。好睇o的。
『同x:0:1 有咩分別呀?』
再多一個冒號,後面代表有幾個小數位。
例如當x係1時,會輸出成 1.0
『點解當i=12,13,14 個陣,x 會係1既?』
呢個你要由頭開始諗。
X:=38
跟住X mod 11,得出5(餘數)。x:=x*X,即係自乘,存回x,x得25。
第二個loop,i係12,25 mod 12得餘數1。自乘都係1。
呢個時候x係1。根本除乜都餘1,跟住點自乘都係1,所以一路都係1
x x x x x x x x x x x x x
第二條,用家輸入三個數字,存到x,y,z
跟住一大段IF的檢測,如果咁咁咁,就會改變一下。當然唔match個condition,行尾的不會執行。
即係話,如果五個condition都唔o岩,x,y,z都冇變。
另一樣要注意係,如果第一個if 檢測成立,x會變。第二個檢測要用改變了的x繼續做if,餘下亦相同。
下面做輸出的writeln句子,任何情況都會印出當時x,y,z的值,同上面有冇改過係無因由關係。你的結論,
『唔符合program 寫既任何一個情況,output 就照寫番input 個堆數呀?』
雖然結果o岩,但係唔係你想的『因唔符合』『就』『照寫番input』
而係(準確一點的)
『唔符合program 寫既任何一個情況,數字無變過,output 寫出當時X,Y,Z的值?』
請細心看清楚我寫的結論,寫程式係一點也不含糊,而且因為乜乜,所以乜乜的關係應該係好清楚。
x:4:1只有在write或writeln用,代表佔用字元,令輸出靚仔o的,例如x係 3.3333333333 ,如果你就咁Write(X),你會得出 3.33333333,而writeln(x:4:1)會變成 _3.3,前面有SPACE,小數一定要一個。
因為小數唔係絕對值,有時就算係整數,例如2,你唔用冒號加數字規限佢用幾多個字元,你會得出(有時)1.99999999999,或者2.000000001咁怪的。


收錄日期: 2021-04-26 11:31:58
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20111231000051KK00859

檢視 Wayback Machine 備份