C语言编程求出时针和分针转一圈相遇的时间
问题:
时针和分针开始在12点重合,这次重合不算,当时针再一次回到12点位置时,时针和分针重合了多少次?用C语言编程怎么编????
#include <stdio.h>
//这里有个假设,是针对电子钟的,因为电子钟上面表盘一圈有60格
//分针每走1格为1分钟。
//时针每走1格为12分钟。
//时针走5格为1小时。
//电子钟的时针和分针肯定是在格上相遇。
//机械表的情况有些复杂,因为秒针时针分针都时刻在动。(没找到好的求解办法)
//判断iHour时 iMinute 分,时针和分针是否相遇
//例如判断 1点05分,是否时针和分针是否相遇,此时iHour = 1,iMinute =5;
int CheckSameOffsite(int iHour,int iMinute)
{
int iHourOffsite,iMinuteOffsite;
//每小时时针走5格;时针走1格,分针走12格
iHourOffsite = iHour * 5 + iMinute / 12;
iMinuteOffsite = iMinute; //分针偏移的格数
return (iHourOffsite == iMinuteOffsite);
}
int main(int argc, char *argv[])
{
int iHour,iMinute;
int iMeetTimes;//相遇次数
iMeetTimes = 0;
printf("时针和分针从时间0点1分开始计时...\n");
for (iHour=0;iHour<12;iHour++) //0 - 11点
for (iMinute=1;iMinute<=60;iMinute++) // 1 -60 分
{
if (CheckSameOffsite(iHour,iMinute))
{
printf("%d点%d分相遇\n",iHour,iMinute);
iMeetTimes++;
}
}
printf("总计:\t12个小时后时针和分针共有%d次相遇\n",iMeetTimes);
return 0;
}
输出结果:
时针和分针从时间0点1分开始计时...
1点5分相遇
2点10分相遇
3点16分相遇
4点21分相遇
5点27分相遇
6点32分相遇
7点38分相遇
8点43分相遇
9点49分相遇
10点54分相遇
11点59分相遇
11点60分相遇
总计: 12个小时后时针和分针共有12次相遇
Press any key to continue
这个只适合特殊的电子钟,即分针每过一分钟才走一格,时针每过12分钟才走一格的电子钟
本文来自桂电二频某帖子......