完善程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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