主题:求PASCAL习题集答案
lilyyfz
[专家分:0] 发布于 2006-03-21 16:18:00
我是一名中学生,想参加信息学奥赛,在网上找了本教材,很多习题做不到,请各位大虾提供习题答案.谢谢了!
将部分题目写在这:
1. 求s=1+4+7+…+298的值(提示:请注意循环变量与相应加数的关系)。
2. 编写一个评分程序,接受用户输入某选手的10个得分(0-10分),然后去掉一个最高分和一个最低分,求出某选手的最后得分(平均分)。
3. 用一张一元票换1分、2分和5分的硬币,每种至少一枚, 问有哪几种换法(各几枚)?
回复列表 (共7个回复)
沙发
百无禁忌 [专家分:50] 发布于 2006-03-21 17:30:00
var s:longint;
function f(i:integer):longint;
begin
if i=1 then f:=f+i else f:=f(i-3)+i;
end;
begin
s:=f(298);
writeln(s);
end.
板凳
百无禁忌 [专家分:50] 发布于 2006-03-21 17:31:00
第一题的递归算法
3 楼
wangqizhi90 [专家分:50] 发布于 2006-03-21 17:32:00
var s:longint;
function suan(i:integer):longint;
begin
if i=1 then suan:=suan+1
else suan:=suan(i-3)+i;
end;
begin
s:=suan(298);
write(s);
end.
算出来是14950
这个可能有点难
4 楼
百无禁忌 [专家分:50] 发布于 2006-03-21 17:47:00
第三题
var a:array[1..3] of integer;
n:integer;
procedure print;
var x:integer;
begin
if a[1]+a[2]*2+a[3]*5=100 then writeln('1: ',a[1],'2: ',a[2],'3: 'a[3]);
n:=n+1;
end;
procedure suan(i:integer);
begin
repeat
a[i]:=a[i]+1;
if i=3 then print else suan(i+1);
if a[i]=100 then a[i]:=0;
end;
begin
suan(1);
end.
5 楼
百无禁忌 [专家分:50] 发布于 2006-03-21 17:47:00
算法是递归回溯
6 楼
wangqizhi90 [专家分:50] 发布于 2006-03-21 17:57:00
var a:array[1..12] of real;
i,j:integer;
k:real;
begin
for i:=1 to 10 do
readln(a[i]);
for i:=1 to 9 do
for j:=2 to 10 do
if a[i]>a[j]
then begin
k:=a[i];
a[i]:=a[j];
a[j]:=k;
end;
for i:=2 to 9 do
a[11]:=a[11]+a[i];
a[12]:=a[11]/8;
writeln(a[12]:3:2,',',a[11]);
end.
第二题
7 楼
lilyyfz [专家分:0] 发布于 2006-03-22 08:12:00
谢谢各位,希望经常能得到大家的帮助,小妹在此感谢了.
不过有个问题,我才学了到for循环,上面的那些程序有点不懂,还望各位大虾哥们帮助!
我来回复