本帖最后由 逍遥处士 于 2013-9-14 23:35 编辑
% F5 x8 y3 `9 p4 ], V# {
) ?3 s0 Z! }' K$ I! |! N/ ?" c# l& f. Y5 E. R3 O8 Z
/ }1 P: u1 f6 P* }* X# I, a这是用MathCAD做的计算,程序跟一楼一样,可见第5个也是29,就这来看楼主的程序可能有缺陷。
l8 c9 m) V% f8 T假如齿数为57,则360*3600/57不能整除,问题是否出在这儿?: t# N) a6 G0 ^% ]
; ?, ? _$ t r. G# O
假设所给齿数能整除的话,不妨只考虑将第一个角度依次翻倍,代码如下:3 X; \) y: i( D8 n
1 `' M/ v5 X/ u6 s$ G1 p
int a=0, b=0, c=0;
) |& i. [! H, ~/ \: w& ^# q, r+ qwhile ( a<360 )
% [- X; A9 b, Z* K$ {{
. B, b) N( S5 w c=(c+s)%60; if ( (c+s)>=60 ) b=(c+s)/60; / H4 `* L! p4 O+ o& r
b=(b+f)%60; if ( (b+f)>=60 ) a=(b+f)/60;
: e7 e( o! y8 d" n [ a=a+j;$ m4 o" @7 l! a# h8 q9 ]( k
printf("%d°%d′%d″\n",a,b,c);
% L4 B V& @2 P8 ?* |; {/ a}; g, [& m! [+ _+ w
9 a2 _" a" O. p* e" q6 k# E! S不妨试一试,看下结果。5 m* L3 i+ x# c( }. [! i# I3 ^
V( O% [% o' ~* N. v |