一天中,時針和分針相遇多少次,時分秒針相遇多少次?


 1 #include <stdio.h>
 2 
 3 //設置時分秒針的速度
 4 //時針720秒走一格,分針60秒走一格,秒針1秒走一格,鍾表一圈共60格
 5 //因此時針速度為1/720,分針速度為1/60,但在程序中為了便於實現,全部擴大720倍
 6 //所以得出如下宏定義
 7 int main()
 8 {
 9     int vh=1; //時針速度
10     int vm=12; //分針速度
11     int vs=720; //秒針速度
12     int circle=12*3600;
13     
14     int n=0;          
15     int t=0;
16 
17     //循環一整天,共24*60*60秒
18     /*思路:三針相遇並不一定是在整秒時相遇,也有可能是在相鄰兩秒之間相遇,例如某次是在秒針從1  秒跳到2秒的過程中相遇。
19     但無論如何,在相遇的那一刻,秒針比分針多走的圈數比這次相遇前要多一圈,
20     例如某時刻秒針比分針多走了100圈,在下次相遇時,秒針就比分針多走了101圈。同理,分針與時針,秒針與時針都滿足這點。*/
21     for(t=1;t<=24*60*60;t++){       
22        int Diff_m_h_ago=(vm-vh)*(t-1)/circle;
23        int Diff_m_h_now=(vm-vh)*t/circle;
24        if(Diff_m_h_now-Diff_m_h_ago==1) //相遇總會比相遇的前一秒多走了1圈
25        {
26          n++;
27          printf("第%d次相遇的時間為 %d:%d:%d\n",n,t/3600,t%3600/60,t%60);
28        }
29     }
30     printf("一天中,時針和分針相遇%d次。\n\n",n);
31     
32     n=0;
33     for(t=1;t<=24*60*60;t++)
34     {
35         //相遇的前一秒總會比相遇后少走了1圈
36        int Diff_m_h_ago=(vm-vh)*(t-1)/circle;
37        int Diff_m_h_now=(vm-vh)*t/circle;
38        int Diff_s_m_ago=(vs-vm)*(t-1)/circle;
39        int Diff_s_m_now=(vs-vm)*t/circle; 
40        if(Diff_s_m_now-Diff_s_m_ago==1 && Diff_m_h_now-Diff_m_h_ago==1)
41        {
42            n++;
43            printf("第%d次相遇的時間為 %d:%d:%d\n",n,t/3600,t%3600/60,t%60);
44        }
45     }
46 
47     printf("一天中,時分秒針相遇%d次。",n);
48     
49     getchar();
50     return 0;
51 }

 時針和分針相遇22次,時分秒針相遇2次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM