C語言學習筆記——計算時鐘的夾角
題目內容:
鐘面上的時針和分針之間的夾角總是在 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>
#include <stdlib.h>
#include <math.h>
main(){
int a,b;//a:小時數,b:分鐘數
float t1,t2,ans;//t1:時針的角度,t2:分針的角度,ans:夾角
//printf("Please input the time\n(12:34 for example)\n");//如果需要輸入提示,刪去“*//”
scanf("%d %d",&a,&b);
//將時間轉爲12小時制(時鐘只有12個格子),保證角度差不會超過360°
if (a>=12){
t1=(float)a-12;
}else {
t1=(float)a;
}
t2=(float)b*6;
t1=t1*30+(float)b*0.5;
ans=fabs(t1-t2);
if(ans>180) ans=360-ans;//若夾角大於180°,取小角
printf("At %d:%02d the angle is %.1f degrees.",a,b,ans);
return 0;
}