完善程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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.

10

1.(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数之和,迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。

const

size=1000;

var

n,r,i,j,k,ans:integer;

p:array [1..size] of integer;

tmp:boolean;

begin

readln(n);

r:=1;

p[1]:=2;

for i:=3 to n do

begin

① ;

for j:=1 to r do

if I mod ② =0 then

begin

tmp:=false;

break;

end;

if tmp then

begin

inc(r);

③ ;

end;

end;

ans:=0;

for i:=2 to (n div 2) do

begin

tmp:=false;

for j:=1 to r do

if i+i= ④ then

begin

tmp:=true;

break;

end;

if tmp then

inc(ans);

end;

writeln(ans);

end.

若输入n为2020,则输出⑤时表示验证成功,即大于2且不超过2010的偶数都满足哥德巴赫猜想。

09

1.(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。

var

a: array[1..100] of integer;

n, i, ans, len, tmp, beg: integer;

begin

read(n);

for i := 1 to n do

read(a[i]);

tmp := 0;

ans := 0;

len := 0;

beg := ① ;

for i := 1 to n do

begin

if tmp + a[i] > ans then

begin

ans := tmp + a[i];

len := i - beg;

end

else if ( ② ) and (i - beg > len) then

len := i - beg;

if tmp + a[i] ③ then

begin

beg := ④ ;

tmp := 0;

end

else

⑤ ;

end;

writeln(ans, ' ', len);

end.

08

1.(字符串替换)给定一个字符串S(S仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a-z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,即S中的A用该字母的大写替换,S中的a用该字母的小写替换;S’中的第二个字母是字母B和b的替换字母,即S中的B用该字母的大写替换,S中的b用该字母的小写替换;……以此类推。

var

change:string;

str:string;

procedure CheckChangeRule;

var

i:integer;

begin

for i:=1 to 26 do begin

if ① then

change[i]:= chr(ord(change[i]) - ord('A') + ord('a'));

end;

end;

procedure ChangeString;

var

len,i:integer;

begin

len := length(str);

for i:=1 to len do begin

if ② then

begin

str[i] := upcase(change[ord(str[i]) –ord(‘A’) + 1]);

end

相关文档
最新文档