program oneThousandNumberic; var son,mom,divNum,modNum,i:integer; begin writeln('pls input son:'); readln(son); writeln('pls input mom:'); readln(mom); i:=1; divNum:=son; while i<=1001 do begin write(divNum div mom); if i=1 then write('.'); modNum:=divNum mod mom; divNum:=modNum*10; i:=i+1; end; end.
题目:输入分子和分母,打印出他的1000位小数。
这道题就是拆分每次的动作。
2 div 7 = 0
2 mod 7 = 2 <-- next div source
print .
2*10 div 7 = 2
2*10 mod 7 = 6 <--
6*10 div 7 = 8
6*10 mod 7 = 4 <--
4*10 div 7 = 5
4*10 mod 7 = 5 <--
5*10 div 7 = 7
5*10 mod 7 = 1 <--
1*10 div 7 = 1
1*10 mod 7 = 3 <--
print result:
0.28571
用每次的除数 去除 分母,商就是当位的值
然后余数就是作为下一位除法的源头,也就是余数*10.
只用打印每次的商,就是小数位了
这道题给我的感觉就是,计算过程很质朴,思路很简单。
就是简单的把人做除法的步骤准确化,使得计算机可以按步骤执行。
然后利用计算机算东西很快的能力,算出结果。