一天中,时针和分针相遇多少次,时分秒针相遇多少次?


 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