云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Free Pascal 典型题目解析

Free Pascal 典型题目解析

  • 62 次阅读
  • 3 次下载
  • 2026/1/10 0:14:00

4、

Var n, m : Integer;

Function solve(n, m : Integer) : Integer; Var i, sum : Integer; Begin

If m = 1 Then Begin

solve := 1; Exit; End; sum := 0;

For i := 1 To n - 1 Do

sum := sum + solve(i, m - 1); solve := sum; End;

Begin

Readln(n, m);

Writeln(solve(n, m)); End.

输入:7 4

输出:__________________

四、完善程序(前 11 空,每空 2 分,后 2 空,每空 3 分,共计 28 分)

1、(子矩阵)输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。若存在,输出所有子矩阵左上角的坐标;若不存在输出“There is no answer”。

Const

SIZE = 50; Var

n1, m1, n2, m2, i, j, k1, k2 : Integer; a, b : Array[1..SIZE, 1..SIZE] Of Integer; good, haveAns : Boolean;

Begin

Readln(n1, m1);

For i := 1 To n1 Do For j := 1 To m1 Do

CCF NOIP2011 初赛 9 普及组 Pascal

Read(a[i][j]); Readln(n2, m2);

For i := 1 To n2 Do For j := 1 To m2 Do ① ;

haveAns := FALSE;

For i := 1 To n1 - n2 + 1 Do For j := 1 To ② Do Begin

③ ;

For k1 := 1 To n2 Do

For k2 := 1 To ④ Do

If a[i + k1 - 1][j + k2 - 1] <> b[k1][k2] Then good := FALSE; If good Then Begin

Writeln(i, ' ', j); ⑤ ; End; End;

If NOT haveAns Then

Writeln('There is no answer'); End.

2、(大整数开方)输入一个正整数n(1≤n<10100),试用二分法计算它的平方根的整数部分。

Const

SIZE = 200;

Type

hugeint = Record len : Integer;

num : Array[1..SIZE] Of Integer; End;

//len表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推 Var

s : String; i : Integer;

target, left, middle, right : hugeint;

CCF NOIP2011 初赛 普及组 Pascal 10

Function times(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的乘积 Var

i, j : Integer; ans : hugeint; Begin

FillChar(ans, SizeOf(ans), 0); For i := 1 To a.len Do

For j := 1 To b.len Do

① := ans.num[i + j - 1] + a.num[i] * b.num[j]; For i := 1 To a.len + b.len Do Begin

ans.num[i + 1] := ans.num[i + 1] + ans.num[i] DIV 10; ② ;

If ans.num[a.len + b.len] > 0 Then ans.len := a.len + b.len

Else ans.len := a.len + b.len - 1; End;

times := ans; End;

Function add(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的和 Var

i : Integer; ans : hugeint; Begin

FillChar(ans.num, SizeOf(ans.num), 0); If a.len > b.len

Then ans.len := a.len Else ans.len := b.len; For i := 1 To ans.len Do Begin

ans.num[i] := ③ ;

ans.num[i + 1] := ans.num[i + 1] + ans.num[i] DIV 10; ans.num[i] := ans.num[i] MOD 10; End;

If ans.num[ans.len + 1] > 0 Then Inc(ans.len); add := ans; End;

Function average(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的平均数的整数部分

CCF NOIP2011 初赛 普及组 Pascal 11

Var

i : Integer; ans : hugeint; Begin

ans := add(a, b);

For i := ans.len DownTo 2 Do Begin

ans.num[i - 1] := ans.num[i - 1] + ( ④ ) * 10; ans.num[i] := ans.num[i] DIV 2; End;

ans.num[1] := ans.num[1] DIV 2; If ans.num[ans.len] = 0 Then Dec(ans.len); average := ans; End;

Function plustwo(a : hugeint) : hugeint;

// 计算大整数 a 加 2 后的结果 Var

i : Integer; ans : hugeint; Begin

ans := a;

ans.num[1] := ans.num[1] + 2; i := 1;

While (i <= ans.len) AND (ans.num[i] >= 10) Do Begin

ans.num[i + 1] := ans.num[i + 1] + ans.num[i] ans.num[i] := ans.num[i] MOD 10; Inc(i); End;

If ans.num[ans.len + 1] > 0

Then ⑤ ; plustwo := ans; End;

Function over(a, b : hugeint) : Boolean; // 若大整数 a > b 则返回 1, 否则返回 0 Var

i : Integer; Begin

If ( ⑥ ) Then Begin

over := FALSE;

CCF NOIP2011 初赛 普及组 Pascal 12 DIV 10;

搜索更多关于: Free Pascal 典型题目解析 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

4、 Var n, m : Integer; Function solve(n, m : Integer) : Integer; Var i, sum : Integer; Begin If m = 1 Then Begin solve := 1; Exit; End; sum := 0; For i := 1 To n - 1 Do sum := sum + solve(i, m - 1); solve := sum; End; Begin

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com