C语言学习笔记——计算时钟的夹角

本文介绍了一种使用C语言计算12:00至11:59间任意时刻时针与分针夹角的方法。通过输入小时与分钟,程序能精确计算并输出两针之间的最小夹角,误差控制在小数点后一位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}
转载请注明出处
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值