機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 5519|回復: 21
打印 上一主題 下一主題

求解一個C語言程序功能是每隔6°18′54″就增加6°18′54″并輸出結(jié)果的程序問題。

[復制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2013-9-14 17:08:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 昨日明月 于 2013-9-14 17:46 編輯 , c9 ^7 q* s' w3 t2 V: T/ ?6 j3 p4 U

; y! L- h# L; ?  W5 |6 r. z" d1 E" C# include <stdio.h>
$ M& |2 K; C2 Z$ B9 @1 [+ C; d! l8 tint main(void)& _/ T" s% {5 V3 [
{
( c+ V$ c+ a- X! @& Z/ Bint i;! b; q; ]' P; Z& u6 ~% u' n: `
int a;
0 P* R: f: e  vint b;4 g9 [6 I9 e1 F8 F1 ?$ k7 U1 \
int c;
5 x7 k; I# P+ U% Bdouble n=0;4 R  H  F* s) ?5 ]$ H# \
    int  m=22734;  ~4 V; b, E* h4 E+ h+ G8 c2 \4 _
    for(i=1;i<=57;++i)
, o( ]; }& w& z3 \{
2 p0 M1 q6 f# d% O# g  n=m*i;
8 c9 {5 H# h. w/ i0 e! P9 p  a=n/3600;
: ^" A/ q5 `* U% C  N  b=((n/3600)-a)*60;
  m+ u. _9 N& R6 i4 }  c=(((n/3600)-a)*60-b)*60;
; c8 b5 b4 I- i1 b3 K8 C  printf("%d°%d′%d″\n",a,b,c);7 h) _  f- i* a2 P8 `1 @" s
}4 M1 q# R8 X$ ?9 Q4 \' O
return 0;- m6 a4 K# ?. [
}6 {, S2 @' E: k
+ ^9 j; }" I& `, v( \* o
輸出結(jié)果:
: b/ I2 _5 [& y
6°18′54″
9 Q4 P% g0 F& k, N1 l12°37′48″
& c4 b+ d. P1 n4 S' I9 O4 \9 w4 ]18°56′42″; j! V) M0 f) N. d( |  ^9 n
25°15′36″
' u/ H  n8 Y2 b0 B6 `  ~5 n6 ?31°34′29″
。。。。。3 r: d! m1 P  R
341°0′35″+ a9 Z. V1 }8 p- Q
347°19′29″) l# I, E# z, D- {: f& }
353°38′23″& r8 R1 v$ f" z. o7 E$ H
359°57′17″

2 \0 g) I3 w( o" l, }
Press any key to continue$ R  \6 H0 l6 Y1 U* B0 M. s( N
第五排正確的結(jié)果應該是31°34′30″  想問一下這個程序哪里出問題了,理論計算與計算機程序計算結(jié)果相差1秒* q1 E3 a% y$ n
ps:1°=60′=3600″
! |2 \6 m9 C/ l, z1 X6 V
回復

使用道具 舉報

2#
發(fā)表于 2013-9-14 17:29:19 | 只看該作者
a,b,c怎么能定義整數(shù)呢,我去

點評

就是要輸出整數(shù),你好好看看程序  發(fā)表于 2013-9-14 17:32
回復 支持 反對

使用道具 舉報

3#
 樓主| 發(fā)表于 2013-9-14 17:32:07 | 只看該作者
就是要輸出整數(shù),你好好看看程序

點評

不可能吧,就那個算錯了,其它56結(jié)果都是對的。  發(fā)表于 2013-9-14 17:35
我也是提個建議呵呵  發(fā)表于 2013-9-14 17:35
整數(shù)精度不夠吧  發(fā)表于 2013-9-14 17:34
回復 支持 反對

使用道具 舉報

4#
發(fā)表于 2013-9-14 18:47:47 | 只看該作者
不懂
回復 支持 反對

使用道具 舉報

5#
 樓主| 發(fā)表于 2013-9-14 18:53:44 | 只看該作者
風隨意 發(fā)表于 2013-9-14 18:47 0 h/ A* M1 ^2 E
不懂
5 J: }4 C# c  r8 n
就是加工齒輪 需要將360°等分。多少個齒數(shù)就多少等分" t4 G+ d) d  K# {" F/ I
回復 支持 反對

使用道具 舉報

6#
 樓主| 發(fā)表于 2013-9-14 19:03:12 | 只看該作者
本帖最后由 昨日明月 于 2013-9-14 19:04 編輯 5 \9 k) }" X7 I" _; L; i7 Y/ A  t# c' `4 k

; {# C+ l  r  P  x. J5 e8 Rhttp://mg7058.com/forum.php?mod=attachment&aid=Mjk3MDM4fGM1NzZlYzY1YTM4NzBkYjA5ODgyNzg4NzkyZWYyMjg3fDE3MjcyNzEwNzE%3D&request=yes&_f=.jpg 完善了程序。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x
回復 支持 反對

使用道具 舉報

7#
發(fā)表于 2013-9-14 19:12:47 | 只看該作者
double也是浮點數(shù)據(jù)類型,它比float更大,這種東西計算精度不高。% |5 p2 N9 {- N

5 h& d& J% G/ E* c( z3 ?1 H由于n是doubule型,那a、b、c與n運算后,全部自動升級為double型了。8 f. _4 s: _% U: x7 a# ?3 k. z
6 n3 u; w% |3 m9 h
由于360*3600=1296000,已經(jīng)超過int的最大值范圍了,對這種超大的整數(shù)運算,你需要使用“大數(shù)運算”的方法去處理。  g2 w. q* y+ O) I6 u

. a" f. p/ f. D" S# F6 v關于C語言的大數(shù)運算,網(wǎng)上有很多相關的資料。
回復 支持 反對

使用道具 舉報

8#
 樓主| 發(fā)表于 2013-9-14 19:55:38 | 只看該作者
fmdd 發(fā)表于 2013-9-14 19:12 / v3 T" t/ J4 Y. L
double也是浮點數(shù)據(jù)類型,它比float更大,這種東西計算精度不高。9 t/ T/ p* j5 O1 c* f
# B+ `; Z+ P3 G3 Q' b+ M6 _
由于n是doubule型,那a、b、c與n運算后 ...

8 a6 _( x. C! L0 R嗯 謝謝。
, w! k2 Q- v1 s1 ]
回復 支持 反對

使用道具 舉報

9#
發(fā)表于 2013-9-14 23:09:36 | 只看該作者
學習來了
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2013-9-14 23:10:45 | 只看該作者
fmdd 發(fā)表于 2013-9-14 19:12 , u8 e2 }$ K( S' _# b: v
double也是浮點數(shù)據(jù)類型,它比float更大,這種東西計算精度不高。
( D4 V7 d8 {  i' B/ Q3 e+ j
' F! a3 C: ]2 s+ h* e由于n是doubule型,那a、b、c與n運算后 ...

& D0 A) I6 K! l4 A) A在32位機器上,int占用4個字節(jié),1個字節(jié)8位,故int共可表示2^32=4294967296種信息,32位的第一位為符號位,故其值域為 -2147483648 ~ +2147483648,容納樓主的數(shù)值還是有余的,沒有超范圍。
% l- q' `( H. Z: V9 N" y' |6 C7 I2 f3 V
a=n/3600,在計算n/3600時,會建立一個double型的臨時變量用以存放結(jié)果,然后再將結(jié)果的整數(shù)部分賦值給a,而不會將a升級成double型。因為a、b、c被定義成int時,在內(nèi)存中已經(jīng)被分配了4個字節(jié),而double型占用的是8個字節(jié),所以它們是不可能升級成double型的。
7 G, O6 v2 g" d: K) v% K
5 W' \' n  I$ T
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-9-25 21:31 , Processed in 0.059358 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表