2010-01-27 100 views
2

我在FSI和VS2010中都試過這兩種。兩種都給出相同的輸出。F中非常簡單的循環#

for i= 8 to 10 do 
    for j=7 to 10 do 
    let product=i*j 
    printfn "%d * %o = %x" i j product 

,輸出是:

8*7=38 
8*10=40 
8*11=48 
8*12=50 
9*7=3f 
9*10=48 
9*11=51 
9*12=5a 
10*7=46 
10*10=50 
10*11=5a 
10*12=64 
val it : unit =() 

我失去了一些東西?

我嘗試通過在線教程學習編程(使用F#,因爲我喜歡它)。

+0

有是一些關於學習編程的優秀在線書籍。我會找到並閱讀它們,而不是試圖學習通過「教程」進行編程。教程並沒有教你如何編程,雖然它們通常對提示和技巧很有用。不幸的是,我不認爲你會發現許多使用F#的優秀教學資源,因爲它是一種新語言。不過,您可能想看看那裏的計劃書。 – 2010-01-27 15:33:35

+0

我正在考慮的計劃書:http://mitpress.mit.edu/SICP/和http://www.htdp.org/2003-09-26/Book/ - 我建議這些不是因爲我認爲Scheme是一種完美的教學語言(儘管有些人會這樣認爲),但是因爲這些知名的書籍可以在線免費獲得。 – 2010-01-27 15:36:11

+0

感謝您的指導。我正在研究它。 – mehmetselim 2010-01-27 15:50:48

回答

5

是的。你錯過了一些東西。 10(十進制)* 10(八進制)= 50(十六進制)。 %d表示十進制,%o表示八進制,%x表示十六進制。如果你不知道它們是什麼,請將它們放到Google上。

以下是所有相同的說明。

在十進制:

10 * 8 = 80。

在八進制:

12 * 10 = 120

在十六進制:

一個* 8 = 50。

在複製之前請仔細看看。

+8

最後的評論真的需要嗎? – 2010-01-27 18:11:03

5

猜猜這是格式化字符串printfn。試試%i

for i = 8 to 10 do 
    for j = 7 to 10 do 
     let product=i*j 
     printfn "%i * %i = %i" i j product 
+0

非常感謝。希望人們不介意這樣簡單的問題! – mehmetselim 2010-01-27 15:26:22

+0

最後的標識符應該是'%i',而不是'i%' – 2010-01-27 15:26:57

+0

@Richard Szalay:是的 – Dario 2010-01-27 15:35:17

12

輸出似乎是正確的我,因爲你分別格式化的ijproduct十進制輸出(%d),八進制(%o)和十六進制(%x)。

數字7,8,9和10被格式化爲7,10,11和12,因爲那是他們的八進制表示。將它們全部更改爲%d%i以解決該問題。