题目内容:
钟面上的时针和分针之间的夹角总是在 0 ~180之间 ( 包括 0 和180 ) 。举例来说,在十二点的时候两针之间的夹角为 0 ,而在六点的时候夹角为180 ,在三点的时候为90 。本题要解决的是计算 12:00 到 11:59 之间任意一个时间的夹角。
输入格式:
每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。
输出格式:
对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。
再看一看,想一想:是否可以不用if 语句,只使用 printf 函数来简化你的程序?
输入样例:
12 0
输出样例:
钟面上的时针和分针之间的夹角总是在 0 ~180之间 ( 包括 0 和180 ) 。举例来说,在十二点的时候两针之间的夹角为 0 ,而在六点的时候夹角为180 ,在三点的时候为90 。本题要解决的是计算 12:00 到 11:59 之间任意一个时间的夹角。
输入格式:
每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。
输出格式:
对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。
再看一看,想一想:是否可以不用if 语句,只使用 printf 函数来简化你的程序?
输入样例:
12 0
输出样例:
At 12:00 the angle is 0.0 degrees.
我的解法:(尚不知错哪里了,黑盒测试用例只有一例正确)
#include <stdio.h>
int main()
{
int hour,minute;
float angle;
scanf("%d %d",&hour,&minute);
angle=360/12*(float)hour+360/12*(float)minute/60-(float)minute/60*360;
if(angle>=0&&angle<=180)angle=angle;
else if(angle>180)angle=360-angle;
else if(angle<0&&angle>=-180)angle=-angle;
else angle=360+angle;
printf("At %d:%d the angle is %.1f degrees.",hour,minute,angle);
return 0;
}
#include"stdio.h"
main()
{
int a,b;
float c;
scanf("%d %d",&a,&b);
c=(b/60.0)*360-(30*(a%12)+(b/60.0)*30);
if (c<0)
c=-c;
if (c>180.0)
c=360.0-c;
printf("At %d:%.2d the angle is %.1f degrees.\n",a,b,c);
return 0;
}