求历届NOIP预赛试题(改进组)

我在普及组。

我先告诉你网址

/jsbase/

第三届全国青少年信息学(计算机)奥林匹克赛区联赛(高中组)初赛试题

(帕斯卡语言竞赛时间:2小时)

第一,基础部分

(1)WPS属于_ _ _ _ _ _类软件;FOXBASE属于_ _ _ _ _ _类软件。用FOXBASE的命令:。创建GZB时,磁盘上会生成一个_ _ _ _ _ _文件。

(2)在MS DOS的根目录下,有以下文件:TIME.EXE·TIME.COM time . bat

提问:c:\ & gt;时间& lt回车>什么顺序?

(3)已知ASCII码表中大写字母后面还有6个其他字符,后面是小写字母。已知字母A的ASCII码是(41)16{代表16十六进制数41}。尝试用下列十进制表示的字母编写ASCII代码:

g →()10 b →()10t →()10

(4)设数组A:= 1;j:= 0;

对于i:=2到n-1 do

开始

s:= 0;m:= n;

while(m & lt;& gt0)和(m mod i=0) do

begin m:= m div I;② ;结束;

如果③,那么开始

j:= j+1;④ ;答:=⑤;

结束

结束;

对于i:=0到j do b do k:= k-1;

b[k]:= b[k]+1;

对于L:=⑦do b[L]:= 0;

s:= 1;

对于i:=1到j do

如果b[I]& lt;& gt0然后for L:=1 to b[i] do ⑧

如果s=n,那么开始

for I:= 1 to j do c[I]:= b[I];

写('(');m:= 1;

对于i:=1到j do

While (c[i]>0)和(M & lt& gt做

开始

M:=M*A[I,1];

如果M=N,那么写(a[i,1])

否则开始

写(A[I,1],' * ');

c[I]:= c[I]-1;

结束;

结束;

WRITELN(')');

结束

结束

结束。

2.【问题描述】:给定一个凸多边形,可以求出几个内接三角形。同时规定内接三角形必须有一条边(只有一条边)与凸多边形的边重合。例如,以下五边形中有五个可能的内接三角形:

问题:当凸多边形每个顶点的两个坐标依次给定时,求面积最大的内接三角形,输出三角形的面积和三个顶点的坐标。

【算法描述】:凸多边形的每个顶点用一对坐标(x,y)表示;

使用数组p: array [1...点的2 * n];存储输入的顶点坐标;

同时编写了一个函数SEA,从三角形的三个顶点计算三角形的面积。

【程序列表】:程序exp 5(输入,输出);

常数n = 6;

类型点=记录x,y:真实结束;

var p :array[1..点的2 * n];

I,j:整数;

q1,q2,q3:点;

smax:真实;

函数海(p1,p2,p3:点):实数;

var s1,s2,s3,p4:实;

开始

s 1:= sqrt((p 1 . x-p2 . x)*(p 1 . x-p2 . x)+(p 1 . y-p2 . y)*(p 1 . y-p2 . y));

S2:= sqrt((p 1 . x-P3 . x)*(p 1 . x-P3 . x)+(p 1 . y-P3 . y)*(p 1 . y-P3 . y));

S3:= sqrt((p2 . x-P3 . x)*(p2 . x-P3 . x)+(p2 . y-P3 . y)*(p2 . y-P3 . y));

P4:=①;sea:= sqrt(P4 *(P4-s 1)*(P4-S2)*(P4-S3));

结束;

开始

for i:=1到n do readln(p[i])。x,p[i]。y);smax:= 0;

对于i:=1到n-1 do ②

对于i:=1到n do

for j:= ③ do

如果④那么

开始

smax:=Sea(p[i],p[i+1],p[j]);

q 1:= p[I];Q2:=⑤;q3:=p[j]

结束;

writeln(smax,q1.x,q1.y,q2.x,q2.y,q3.x,q3.y)

结束。

3.【问题描述】:马赛克:边长为1的正方形,面积为1。从一个边长为1的正方形开始,两个边长为1的正方形可以用来拼接一个面积为2:

同时表示同意:

1.边长相等的矩形被认为是相同的;(所以下面两个面积为2的矩形只当作一个矩形);

2.等长的边可以拼接,两条边必须重叠。从一个面积为2的矩形开始,可以用两个面积为2的矩形拼出一个面积为4的矩形(包括正方形)。拼写如下:

同样,从面积为4的矩形(包括正方形)开始,可以拼出面积为8的矩形,拼法如下:

可以按照上面的方法继续拼。

问题:输入一个数字N,输出所有面积不超过N的可能拼法,比如N=20时,输出:(1,1),(2,1),(4,2),(8,2),(16,3)是面积为1的拼法。

【算法描述】:矩形可以用三个数x,y,S表示,其中x,y表示边长,S表示面积,图形用数组G [1..100, 1 ..3].

当n给定时,可能拼接的数目为r,并且满足:2r

使用数组B [1...100]来记录各个区域的可能拼写。

【程序列表】:程序ex P8(输入,输出);

type g =记录x,y,z:整数结束;

var g1 :array[1..g的100];

I,j,n,s1,jj,j1,j2,i1:整数;

数组[1..100]的整数;

GW:g;

函数eq(gk:g):布尔型;

var jeq:整数;p:布尔型;

开始

p:=真;jeq:= 1;

而(p和(jeq & lt=j)) do

if ((gk.x=g1[jeq].x)和(gk.y=g1[jeq].y))

或者((gk.x=g1[jeq])。y)和(gk.y=g1[jeq].x))

那么p:= false else jeq:= jeq+1;

等式:=p

结束;

开始

readln(n);n:= n+1;s 1:= 1;jj:= 1;

当①做

开始②;jj:=jj+1结束;

③ ;j 1:= 1;j:= 1;

g1[j]。x:= 1;g1[j]。y:= 1;g1[j]。z:= 1;

对于i:=2到jj do

开始

J2:= j;

对于i1:=j1到j2 do

开始

gw.x:=g1[i1]。x * 2;gw.y:=g1[i1]。y;gw.z:=g1[i1]。z * 2;

如果④,那么开始

j:= j+1;g1[j]:=gw

结束;

gw.x:=g1[i1]。x;⑤

如果eq(gw)然后开始

j:= j+1;⑥

结束;

结束;

j1:=j2+1

结束;

对于i:=1到n do b[I]:= 0;

for i:=1 to j do ⑦

for i:=1 to n do if ⑧然后写('(',I ',',b[i],')');

结束。

可能没有图片,去网站(有很多,慢慢找)。

祝你我好运!!!