程序可以计算0:00~23:59之间的任意时刻两针之间的夹角。
#include
#include
int main()
{int m,h;
float a,a1,a2;
scanf("%d%d",&h,&m);
a1=h%12*30+0.5*m; //时针每走1小时是30度,1分钟走0.5度
a2=6*m; //分针每走1分钟是6度
a=fabs(a1-a2); //夹角为二者之差的绝对值
printf("At %d:%d the angle is %.1f degrees.\n",h,m,a);
return 0;
}
#include
void main()
{
int a,b;
float c,d,e;//上面不用说了吧,既然有小数点,就一定要用浮点数
scanf("%d%d",&a,&b);
c=(a%12+(float)b/60)*30;//a+b/60是时针实际走过的小时数,乘上每小时占得30°,当12点多的时候结果可能大于360°,%代表取余数
d=(float)b/60*360.0;//分针走的时机小时数b/60,乘上每小时占得360°,算式里不加float的话除法会当整型去余数
if(c
else//其他的时候c-d
e=c-d;
printf("At %d:%d the angle is %.1f degrees.",a,b,e);//这里%.1f里面的.1代表输出1位小数
}
解决夹角问题的方法:
#include
void main()
{
int a,b;
float c,d,e;//
scanf("%d%d",&a,&b);
c=(a%12+(float)b/60)*30;//a+b/60是时针实际走过的小时数,乘上每小时占得30°,当12点多的时候结果可能大于360°,%代表取余数
d=(float)b/60*360.0;//分针走的时机小时数b/60,乘上每小时占得360°
if(ce=d-c;
else//其他的时候c-d
e=c-d;
printf("At %d:%d the angle is %.1f degrees.",a,b,e);//
}
就一个最简单的公式,你一看就懂30m-5.5n的绝对值.