回 帖 发 新 帖 刷新版面

主题:求PASCAL习题集答案

我是一名中学生,想参加信息学奥赛,在网上找了本教材,很多习题做不到,请各位大虾提供习题答案.谢谢了!
将部分题目写在这:
1. 求s=1+4+7+…+298的值(提示:请注意循环变量与相应加数的关系)。
  2. 编写一个评分程序,接受用户输入某选手的10个得分(0-10分),然后去掉一个最高分和一个最低分,求出某选手的最后得分(平均分)。
  3. 用一张一元票换1分、2分和5分的硬币,每种至少一枚, 问有哪几种换法(各几枚)?

回复列表 (共7个回复)

沙发

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.

板凳

第一题的递归算法

3 楼

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 楼

第三题
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 楼

算法是递归回溯

6 楼

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 楼

谢谢各位,希望经常能得到大家的帮助,小妹在此感谢了.
不过有个问题,我才学了到for循环,上面的那些程序有点不懂,还望各位大虾哥们帮助!

我来回复

您尚未登录,请登录后再回复。点此登录或注册