时针分针重合问题与时针、分针、秒针重合问题

来源:互联网 发布:slack通讯软件 编辑:程序博客网 时间:2024/03/29 19:33

时针分针重合问题与时针、分针、秒针重合问题实质都是数学问题,可以用数学方法直接解决:





相应的C代码:

//时针与分针的重合时的时间#include<stdio.h>int main(void){   int h,m;   float s;   h=0;    m=0;    s=0.0; //        printf("h=%d,m=%d,s=%f\n",h,m,s);   for(int i=1;i<22;i++)   {    h=(720*i)/(11*60);    m=(720*i-h*60*11)/11;    s=((720*i-h*60*11-m*11)*1.0)/11;    s=s*60;        printf("h=%d,m=%d,s=%f\n",h,m,s);   }   return 0;} //求取n!的末尾的0#include<stdio.h>int zero_num(long n){     int tag=5;     int total_num=0;     while(tag<=n)     {         for(int k=tag;k<=n;k+=tag)         {              if(k%tag==0) total_num=total_num+1;         }         tag=tag*5;     }     return total_num;}int main(void){    long n;    int num;    printf("please enter a num(>0):\n");    scanf("%ld",&n);    num=zero_num(n);    printf("%ld! have %d tail zero number\n",n,num);    return 0;}  //时针,分针、秒针重合代码,转载自csdn博客#include<stdio.h>//设置时分秒针的速度//时针720秒走一格,分针60秒走一格,秒针1秒走一格,钟表一圈共60格//因此时针速度为1/720,分针速度为1/60,但在程序中为了便于实现,全部扩大720倍//所以得出如下宏定义#define v_h 1 //时针速度#define v_m 12 //分针速度#define v_s 720 //秒针速度#define s_total (720*60) //一圈的总路程int s_h(int time){return v_h*time;}int s_m(int time){return v_m*time;}int s_s(int time){return v_s*time;}int main(){  int n=0;     int time=0;  //循环一整天,共24*60*60秒  /*思路:三针相遇并不一定是在整秒时相遇,也有可能是在相邻两秒之间相遇,例如某次是在秒针从1 秒跳到2秒的过程中相遇。但无论如何,在相遇的那一刻,秒针比分针多走的圈数比这次相遇前要多一圈,例如某时刻秒针比分针多走了100圈,在下次相遇时,秒针就比分针多走了101圈。同理,分针与时针,秒针与时针都满足这点。*/  for(time=1;time<=24*60*60;time++)  {  //相遇的前一秒总会比相遇后少走了1圈  if(((s_s(time)-s_m(time))/s_total+1)==((s_s(time+1)-s_m(time+1))/s_total) &&  ((s_m(time)-s_h(time))/s_total+1)==((s_m(time+1)-s_h(time+1))/(s_total)))  {  n++;  printf("第%d次相遇的时间为 %d:%d:%d\n",n,(time+1)/3600,(time+1)%3600/60,(time+1)%3600%60);  }  }  printf("一天中时分秒共相遇了%d次\n",n);}



0 0
原创粉丝点击