作业帮 > 综合 > 作业

求pascal大师解答一下我的问题,不要去搜,(本人会),我自己编的太乱了,就两道题,一百分!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/01 12:22:37
求pascal大师解答一下我的问题,不要去搜,(本人会),我自己编的太乱了,就两道题,一百分!
不知道是不是思路错了,求大师解答一下:
1、你是个贪睡虫,有一天被老师逮个正着,这个老师很有意思,提出一个问题:“给定入睡时刻和起床时刻,计算一共睡了多长时间”,如果回答正确就可以免于处罚。入睡时刻和起床时刻都采用24小时制表示法(见备注),而且知道睡觉时间最少为1秒,最多为24小时。
输入第一行描述入睡时刻,第二行描述起床时刻,两个时刻都是采用“HH:MM:SS”,其中“HH”表示时,范围为0到23,“MM”表示分,范围为0到59,“SS”描述秒,范围为0到59。注意即使时分秒只有一位数也要通过加0补齐两位。
Output
输出一共睡了多长时间。格式同输入一样。
Sample Input Copy
20:00:00
04:00:00
Sample Output Copy
08:00:00
2、输入N个同学的语、数、英三科成绩,计算他们的总分与平均分,并统计出每个同学的名次,最后以表格的形式输出。
Input
第一行,n(n
题目1:var s1,s2:string[8]; hh1,mm1,ss1,hh2,mm2,ss2,hh,mm,ss:integer; i:integer;begin readln(s1); readln(s2); val(copy(s1,1,2),hh1,i); val(copy(s1,4,2),mm1,i); val(copy(s1,7,...
再问: 第二题还有更简单的吗?我有些地方真的看不懂啊。。。。有没有更简单的啊?我会加分的!并且你这个也错了、、、当它的数很多时就会错,跟我编的程序一样的。第一题也错了,你看一下输出啊。。
再答: for i:=1 to n do num[i]:=no[old[i]]; 此行错误。

应改为:
for i:=1 to n do num[old[i]]:=no[i];
再问: 看一下评论
再答: 两题并着一题做:

var
n:integer;
a,aa:array[1..1001] of integer;{存放卡片编号}
c:array[1..1000] of integer;{统计每种卡片张数}
no:array[1..1000] of integer;{名次数组}
i,j,k,m,t:integer;
f:text;
x:integer;
begin
assign(f,'卡片.in');reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
close(f);
{排序}
for i:=1 to n-1 do for j:=i+1 to n do
if a[i]>a[j] then begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
end;
{统计每种卡片张数。k存放卡片序号,m存放卡片张数}
a[n+1]:=0;
k:=1; m:=1;
for i:=1 to n do
if a[i]a[i+1] then begin c[k]:=m; inc(k); m:=1; end
else begin inc(m); end;
{去掉重复后的卡片并存入aa中}
m:=0;
for i:=1 to k-1 do begin m:=c[i]+m; aa[i]:=a[m]; end;
{打印:序号、卡片号、卡片张数}
for i:=1 to k-1 do writeln(i:3,aa[i]:3,c[i]:3);

{名次数组赋值}
for i:=1 to n do no[i]:=i;
{同名次处理}
for i:=2 to n do if a[i]=a[i-1] then no[i]:=no[i-1];
write('请输入分数=':11);readln(x);
for i:=1 to n do if x=a[i] then writeln('名次=',no[i]);
end.
再问: 啊???您这是哪一题啊?另外这题可以不用text吗?看不懂啊,可以更简便吗??看你回答了这么多题再多加二十吧。。。呵呵
再答: 哦!行了吧!一题一题问,一题一题答,不要想一口吃个胖子。否则连我都给你搅糊涂了! 不要你的分也罢。