谁有free pascal的2011年的也就是十七届的初赛题目和答案?

作者&投稿:仲菲 (若有异议请与网页底部的电邮联系)
金华市第十七届PASCAL语言答案~

这里应该找不到答案 不会的话 还是问问你的同学·或者老师比较好 让他们给你讲讲 不要总是不动脑 只抄答案。对成绩提高最大的还是问老师。
你要是是认真学习想对对答案,就直接不要答案了,作业没有多大意义;如果为了完成任务,这又是何必了,如果想提高成绩,还是老老实做吧。

{123456789 0 -1}vari,j,k:longint;begini:=123456789;j:=0;k:=-1;writeln(i:8,j:8,k:8);end.数值本身就是按右对齐输出的。实际输出时,变量i用了9个字符宽度,即当给定的场宽小于数值宽度时是按数值的实际宽度输出的 !

单选就算了吧太多了~~~
答案:A

二、不定项选择题(共10题,每题1.5分,共15分。每题有一个或多个正确选项。多选或少选均不得分。)
(这部分较难得分,我错了很多题)
1. 如果根节点的深度记为1,则一棵恰有2011个叶子结点的二叉树的深度可能是( )。
A. 10
B. 11
C. 12
D. 2011
答案:CD
2. 在布尔逻辑中,逻辑“或”的性质有( )。(原题ABCD选项里的或是个类似V的表示或的符号,为了该文档流通方便我都改成了“V”)
A. 交换律:PVq=qVp
B. 结合律:P V(Q V R)=(P V Q)V R
C. 幂等律:P V P = P
D. 有界率:P V 1 = 1 (1表示逻辑真)
答案:ABCD
3. 一个正整数在十六进制下有100位,则它在二进制下可能有( )位。
A. 399
B. 400
C. 401
D. 404
答案:AB
4. 汇编语言( )。
A. 是一种与硬件无关的程序设计语言
B. 在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试
C. 可以直接访问寄存器、内存单元、I/O端口
D. 随着高级语言的诞生,如今已完全被淘汰,不再使用
答案:BC
5. 现有一段文言文,要通过二进制哈弗曼编码进行压缩。简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700、600、300、400。那么,“也”字的编码长度可能是( )。
A. 1
B. 2
C. 3
D. 4
答案:BC
6. 生物特征识别是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、虹膜识别、人脸识别等技术已广泛应用于政府、银行、安全防卫等领域。以下属于生物特征识别技术及其应用的是( )。

A. 指静脉验证
B. 步态验证
C. ATM机密码验证
D. 声音验证
答案:ABD
7. 对于序列“7、5、1、9、3、6、8、4”,在不改变顺序的情况下,去掉( )会使逆序对的个数减少3.
A. 7
B. 5
C. 3
D. 6
答案:CD
8. 计算机中的数值信息分为整数和实数(浮点数)。实属之所以能表示很大或者很小的数是由于使用了( )。
A. 阶码
B. 补码
C. 反码
D. 较长的位数
答案:A
9. 对右图使用Dijkstra算法计算S点到其余各点的最短路径长度时,到B点的距离d【B】初始时赋值为8,在算法的执行过程中还会出现的值有( )。
(原试题右图,为照顾手机党我字述边集((a,b,c)代表a到b有条长c的边):(S,A,2),(S,B,8),(S,D,3),(A,B,5),(B,C,1),(B,D,3),(C,D,1)
A. 3
B. 7
C. 6
D. 5
答案:BCD
10. 为计算机网络中进行数据交换而建立的规则、标准或约定的**称为(原题写的是“成为”)网络协议。下列英文缩写中,( )是网络协议。
A. HTTP
B. TCP/IP
C. FTP
D. WWW
答案:ABC
三、问题求解(共2题,每题5分,共计10分)
1.平面图是可以画在平面上,且它的边仅在顶点上才能相交的简单无向图。4个顶点的平面图至多有6条边,如右图所示。那么,5个顶点的平面图至多有____条边。
(图我就不画了,比较简单,是一个口画一条对角线,然后没有对角线的那2个点从口外面连了一条曲线)
答案:9
2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。举例说明,对于字符串“BCA”,可以将A移到B之前,变成字符串“ABC”。如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”,最少需要____次操作。
答案:4
四、阅读程序写结果(共4题,每题8分,共计32分)
1.
const
SIZE=100;
var
n,i,sum,x:integer;
A:array[1..SIZE]of integer;
begin
readln(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
read(x);
inc(a[x]);

end;

i:=0;
sum:=0;
while sum<(n div 2 + 1) do
begin
inc(i);
sum:=sum+a[i];
end;
writeln(i);
end.
输入:
11
4 5 6 6 4 3 3 2 3 2 1
输出:__________
答案:3
2. 啊
var
n:ineger;
procedure f2(x,y:integer);
forward;
procedure f1(x,y:integer);
begin
if x<n then
f2(y,x+y);
end;
procedure f2(x,y:integer);
begin
write(x,’ ‘);
f1(y,x+y);
end;
begin
readln(n);
f1(0,1);
end.
输入:30
输出:__________

答案:1 2 5 13 34
3. 啊
const
v = 100;
var
visited:array[1..v]of boolean;
e:array[1..v,1..v]of integer;
n,m,ans,i,j,a,b,c:integer;

procedure dfs(x,len:integer);
var
i:integer;
begin
visited[x] := true;
if len > ans then
ans:=len;
for i:=1 to n do
if (not visited(i)) and(e[x,i] <> -1) then
dfs(I,len+e[x,i]);
visited[x] := false;
end;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to n do
e[i][j] := -1;
for i:=1 to m do
begin
readln(a,b,c);
e[a][b]:=c;
e[b][a]:=c;
end;
for i:=1 to n do
visited[i]:=false;
ans:=0;
for i:=1 to n do
dfs(i,0);
writeln(ans);
end.
输入:
4 6
1 2 10
2 3 20
3 4 30
4 1 40
1 3 50
2 4 60
输出:______
答案:150
4. 啊
const
SIZE = 10000;
LENGTH = 10;
var
sum : longint;
n,m,I,j : integer;
a:array[1..SIZE , 1..LENGTH]of integer;
function h(u , v :integer):integer;
var
ans,i : integer;
begin
ans:=0;
for i:=1 to n do
if a[u][i] <> a[v][i] then
inc(ans);
h := ans;
end;
begin
readln(n);
fillchar(a,sizeof (a),0);
m:=1;
repeat
i := 1;
while (i <=n) and (a[m][i] =1 ) do
inc(i);
if i>n then
break;
a[m][i]:=1;
for j:=i + 1 to n do
a[m][j] := a[m-1][j];
until false;
sum := 0;
for i := 1 to m do
for j := 1 to m do
sum := sum + h(i,j);
writeln(sum);
end.
输入:7
输出:______
答案:57344

五、完善程序(第一题,每空2分,第二题,每空3分,共计28分)
1.(大整数开方)输入一个正整数n(1<=n<10^100),试用二分法计算它的平方根的整数部分。
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;
function times(a, b : hugeint) : hugeint;
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;
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;
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;
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] div 10;
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;
var
i: integer;
begin
if (⑥) then

begin
over := false;
exit;
end;
if a.len > b.len then
begin
over := true;
exit;
end;
for i := a.len downto 1 do
begin
if a.num[i] < b.num[i] then
begin
over := false;
exit;
end;
if a.num[i] > b.num[i] then
begin
over := true;
exit;
end;
end;
over := false;
end;
begin
readln(s);
fillchar(target.num,sizeof(target.num),0);
target.len := length(s);
for i := 1 to target.len do
target.num[i] := ord(s[target.len - i +1]) - ⑦;
fillchar(left.num,sizeof(left,num),0);
left.len:=1;
left.num[1]:=1;
right:=target;
repeat
middle:=average(left,right);
if over(⑧)
then right := middle
else left := middle;
until over(plustwo(left),right);
for i:= left.len downto 1 do
write(left.num[i]);
writeln;
end.

答案:
① ans.num[i+j-1]
② ans.num[i]:=ans.num[i] mod 10
③ ans.num[i]+a.num[i]+b.num[i]
④ ans.num[i] mod 2
⑤ inc(ans.len)
⑥ a.len<b.len
⑦ ord(‘0’)
⑧ times(middle,middle),target
2.(笛卡尔树)对于一个给定的两两不等的正整数序列,笛卡尔树是这样的一棵二叉树:首先,它是一个最小堆,即除了根结点外,每个结点的权值都大于父结点的权值;其次,它的中序遍历恰好就是给定的序列。例如,对于序列7、2、12、1、10、5、15、3,下图就是一棵树对应的笛卡尔树。现输入序列的规模n(1<=n<100)和序列的n个元素,试求其对应的笛卡尔树的深度d(根节点深度为1),以及有多少个叶节点的深度为d。
const
SIZE = 100;
INFINITY = 1000000;
var
n , maxDeep, num , i : integer;
a : array[1..SIZE] of integer;
procedure solve(left , right , deep : integer);
var
i,j,min: integer;
begin
if deep>maxDeep then
begin
maxDeep :=deep;
num := 1;
end
else if deep=maxDeep then
① ;

min := INFINITY;
for i := left to right do
if min > a[i] then
begin
min := a[i];
②;
end;
if left < j then
③;
if j<right then
④;
end;
begin
readln(n);
for i := 1 to n do
read(a[i]);
maxDeep:=0;
solve( 1, n, 1);
writeln(maxDeep, ‘ ‘, num);
end.
答案:
① inc(num)
② j:=i
③ solve(left,j-1,deep+1)
④ solve(j+1,right,deep+1)

答案
一、BBCCB DCBCC BACCC DAAAC

(1) 128
(2) 3(ABCDEFG BCDEFG BADEFG BADECG)

(1) 165(n..m的自然数求和)
(2) 22366472011(手机键盘输入CCFNOIP2011要按什么键)
(3) 3(中位数)
(4) 20(杨辉三角)
四.1
(1) read(b[i][j]);或 read(b[i,j])
(2) m1 - m2 + 1
(3) good := true;
(4) m2
(5) haveAns := true;
四.2
(1) ans.num[i + j - 1]
(2) ans.num[i]:= ans.num[i] mod 10
(3) ans.num[i] + a.num[i] + b.num[i]
(4) ans.num[i] mod 2
(5) inc(ans.len)
(6) a.len < b.len
(7) 48
(8) times(middle, middle), target
我发那么多遍了,以后要习惯自己搜搜。

百度

厉害


乌恰县14727653643: free pascal Runtime error 201 -
尉巧门冬: range check error 范围检查出错 可能是数组里面该写整形的写成了长整型,或者是运算里面长整型的数的运算超出了他的应有范围 或者是定义出现了错误

乌恰县14727653643: Free Pascal exitcode=201 错误 -
尉巧门冬: if (m=0) or (n=0) 少了个then begin s:=0; end; while (s=0) or (s mod n<>0) or (s mod m <>0) do 上面既然m=0 n=0了,后面就不能mod n或mod m , 我给你修改了一下,你看是不是这样的 varm,s,n,a:integer; beginreadln(m);readln(n);if m>=n ...

乌恰县14727653643: Free Pascal IDE2.2.0下载地址 -
尉巧门冬: 你可以从 www.freepascal.org 上去下载软件的最新版.下载页面 http://www.freepascal.org/download.var 官方版本 现在已经有许多制作好的包,它们都包含了一个安装程序以使您在最短的时间内开始使用 Free Pascal.所有的包都包含一个 README 文件,它向您提供安装过程的概述以及最近更新. 最新的版本是 2.2.0 .

乌恰县14727653643: 谁有 FREE PASCAL 的安装软件 -
尉巧门冬: ftp://ftp.freepascal.org/pub/fpc/beta/2.1.4/i386-win32/fpc-2.1.4.i386-win32.exe 用迅雷下载 资源描述:Free Pascal 2.1.4编程软件 文件大小:30.43MB 文件格式:EXE

乌恰县14727653643: pascal编程错误:exitcode=201 -
尉巧门冬: main 应该赋值为 longint; integer 能接受的最大值是32767,而8的阶乘为40320,超出了integer 的范围; 7 的阶乘为5040,仍在integer 范围内; 一般求阶乘等解的值可能较大的题时,用较大范围的数据类型; 实在不行,用real,输出时加双场宽就行了.

乌恰县14727653643: Free Pascal高精度算法 201错误 求编程好手来帮我看看! -
尉巧门冬: 把c数组的定义改为c:array[1..20000] of 0..19;不然你a+b是两位数你的c数组就爆了

乌恰县14727653643: pascal201错误是什么?
尉巧门冬: 201是指数组下标越界,有可能是循环体里处理了意外的不相符的数据类型. 强制退出类型的 . 比如 :( 最常见的 ) 在执行程序时,运行超时,然后按ctrl+break就强制退出了.但是这个时候程序并没有执行完毕,此时就会显示 “错误314” .

乌恰县14727653643: 哪有FREE PASCAL下载?
尉巧门冬: FREE PASCAL下载地址: http://58.61.39.221/down?cid=6E4130E041DA08E8F9CA4A7E0A1898999A935159&t=2&fmt=-教程下载地址: http://bbs.freekaoyan.com/thread-43153-1-1.html

乌恰县14727653643: 有那些网址可以下载到free pascal2.2.2版?
尉巧门冬: http://nchc.dl.sourceforge.net/sourceforge/freepascal/fpc-2.2.4.i386-win32.exe 这个就是 谢谢采纳哈```

乌恰县14727653643: Free Pascal Compiler Version 3.0.0 高精度运算程序 exitcode=201 -
尉巧门冬: 把以下二行修改一下:for i:=1 to len1 do val(s1[len-i+1],a1[i],c); for i:=1 to len2 do val(s2[len-i+1],a2[i],c); 改为:for i:=1 to len1 do a1[i]:=ord(s1[len1-i+1])-48; for i:=1 to len2 do a2[i]:=ord(s2[len2-i+1])-48;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网