一道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
展开
 我来答
匿名用户
推荐于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度!希望采纳!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式