一道Pascal编程题目
问题描述:指针式钟表的历史可追溯到1386年,在这个问题中,需要你求出一般的指针式钟表的时针和分针之间的角度,我们假设如果有秒针的话,其始终指向12:00。问题求解:输入...
问题描述:
指针式钟表的历史可追溯到1386年,在这个问题中,需要你求出一般的指针式钟表的时针和分针之间的角度,我们假设如果有秒针的话,其始终指向12:00。
问题求解:
输入一些时间的列表,输出时针和分针之间的最小的正角。
输入文件(HOROLOGE.IN):
每行输入一个时间,时间是以“小时:分钟”的格式输入。小时H的范围是1≤H≤12,分钟M的范围是00≤M≤59。应该注意的是H输入的是1或2位数字,M必须有两位数字,中间用“:”分隔,即输入时间的格式与你在数字表上看到的是一样的。若输入0:00,则表示输入完毕。
输出文件(HOROLOGE.OUT):
输出各行与输入各行相对应,对于任何一个输入的时间来说,输出的角度都应当在0到180度之间。输出的数字应四舍五入,精确到千分之一,即精确到小数点后第三位。
输入输出示例:
HOROLOGE .IN 12:00 9:00 8:10 0:00
HOROLOGE .OUT 0.000 90.000 175.000 展开
指针式钟表的历史可追溯到1386年,在这个问题中,需要你求出一般的指针式钟表的时针和分针之间的角度,我们假设如果有秒针的话,其始终指向12:00。
问题求解:
输入一些时间的列表,输出时针和分针之间的最小的正角。
输入文件(HOROLOGE.IN):
每行输入一个时间,时间是以“小时:分钟”的格式输入。小时H的范围是1≤H≤12,分钟M的范围是00≤M≤59。应该注意的是H输入的是1或2位数字,M必须有两位数字,中间用“:”分隔,即输入时间的格式与你在数字表上看到的是一样的。若输入0:00,则表示输入完毕。
输出文件(HOROLOGE.OUT):
输出各行与输入各行相对应,对于任何一个输入的时间来说,输出的角度都应当在0到180度之间。输出的数字应四舍五入,精确到千分之一,即精确到小数点后第三位。
输入输出示例:
HOROLOGE .IN 12:00 9:00 8:10 0:00
HOROLOGE .OUT 0.000 90.000 175.000 展开
1个回答
推荐于2016-07-17
展开全部
已调试过了,应该不会错,希望lz看好:
var
s:string;
h,m,s1,s2,s3:real;
i:longint;
ch:char;
begin
readln(s);
for i:=1 to length(s) do
if s[i]=':' then break;
val(copy(s,1,i-1),h);
val(copy(s,i+1,length(s)-i),m);
while (h<>0)or(m<>0) do
begin
if h=12 then h:=0;
s1:=m*0.5+h*30;
s2:=m*6;
if s1>s2 then
begin
if s1-s2<=360-(s1-s2) then writeln(s1-s2:0:3) else writeln(360-(s1-s2):0:3);
end
else
begin
if s2-s1<=360-(s2-s1) then writeln(s2-s1:0:3) else writeln(360-(s2-s1):0:3);
end;
readln(s);
for i:=1 to length(s) do
if s[i]=':' then break;
val(copy(s,1,i-1),h);
val(copy(s,i+1,length(s)-i),m);
end;
end.
主要是记住时针是每分钟走0.5度,而分针是每分钟走6度!希望采纳!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询