F中非常简单的循环#

问题描述:

我在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

是的。你错过了一些东西。 10(十进制)* 10(八进制)= 50(十六进制)。 %d表示十进制,%o表示八进制,%x表示十六进制。如果你不知道它们是什么,请将它们放到Google上。

以下是所有相同的说明。

在十进制:

10 * 8 = 80。

在八进制:

12 * 10 = 120

在十六进制:

一个* 8 = 50。

在复制之前请仔细看看。

+8

最后的评论真的需要吗? – 2010-01-27 18:11:03

猜猜这是格式化字符串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

输出似乎是正确的我,因为你分别格式化的ijproduct十进制输出(%d),八进制(%o)和十六进制(%x)。

数字7,8,9和10被格式化为7,10,11和12,因为那是他们的八进制表示。将它们全部更改为%d%i以解决该问题。

需要注意的是在printf格式说明符的文档是在这里

http://msdn.microsoft.com/en-us/library/ee370560(VS.100).aspx

(虽然截至今​​天,该文件的格式是有点搞砸了,很难看)