• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小比丘
博客园    首页    新随笔    联系   管理    订阅  订阅
一天中,时针和分针相遇多少次,时分秒针相遇多少次?
 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次。

posted on 2012-11-12 15:59  小比丘  阅读(4554)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3