C語言學習筆記——計算時鐘的夾角

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;
}
轉載請註明出處
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章