第三届绍兴市少儿奥林匹克信息学试题及答案

1.选择一个正确答案代码(A/B/C/D)填在每道题的括号内(每题2分,每题只有一个正确答案,多选或错选不计分。***30分)

1)我们通常根据计算机的主要部件来划分计算机的阶段,所以1946年制造的ENIAC属于()计算机。

a)第二代b)第三代c)第四代d)第一代

2)在下列计算机设备中,作为存储设备的是()

a)键盘B) RAM C)监视器D) CPU

3)我们一般把可以播放VCD、CD光盘看电影、听音乐的电脑称为“多媒体电脑”。下列硬件设备中,多媒体计算机必须具备()。

a)光驱b)网卡c)扫描仪d)打印机

4)计算机具有计算功能,那么这个“计算”是在下列哪种硬件设备上完成的()?

A) CPU B) ROM C)内存d)显示卡

5)下列是计算机操作系统()

a)Pascal B)Photoshop C)Word D)LINUX

6)十进制数11对应的二进制数是()。

a)1011 B)1100 C)0011D)1010

7)在7)pascal编程中,整数类型用于保存整数。以下整数中,()可以用整数类型变量正确保存。

32650 B) 40000 C) 60000 D) 50000

8)通过互联网,我们可以使用()与远方的朋友实时聊天。

a)电子邮件B)腾讯QQ C) BBS D) FTP。

9)我们可以根据网络覆盖区域的大小对网络进行分类。以下网络类别不是根据网络覆盖区域的大小进行分类的()

a)广域网B)城域网C)以太网D)局域网

10)下列关于计算机病毒的描述中,正确的是()。

a)如果一个人得了感冒病毒,他使用的电脑可能会感染这个人的病毒,最终发展成电脑病毒。

b)如果电脑周围环境不好(灰尘多等。)厂家组装的时候,电脑会有电脑病毒。

c)计算机病毒本质上是一种计算机程序。

d)计算机病毒只能通过计算机网络传播。

11)在PASCAL编程中,表达式“32 DIV 5”的计算结果是()。

A) 2 B) 7 C) 6.4 D) 6

12)在pascal编程中,我们可以使用()语句中途退出循环。

a)重复B)结束C)中断D)继续

13)pascal源程序可以编译生成在操作系统下可以直接执行的可执行程序。这些可执行程序的扩展名是()。

a)。doc B)。exe C)。txt D)。优先权

14)下列关于二叉树的描述中,正确的是()。

A)一个节点可能没有子节点,或者有1个子节点,或者有2个子节点。

b)根节点可以有3个子节点c)根节点可以有4个子节点。

d)任何节点最多可以有4个子节点。

15)给定一个队列中有几个数字(如下图所示),最后一个出列元素是()。

12 B) 5 C) 9 D) 32

2.解题:(5+5 = 10)

1.二叉树的每个节点最多有两个子节点,子节点分左右(顺序不能颠倒)。现在有A、B、C三个节点组成二叉树。现在规定根节点必须是A,B是A的左子..问:满足上述条件的二叉树有多少种不同的形式?(只需写下数量)

2.新田忌赛马。田忌有三匹马(奔跑速度分别为40、60、90),王琦有三匹马(奔跑速度分别为50、70、100),田忌的马和王琦的马成对比赛。由于每次出场的顺序是由田忌决定的,田忌通过巧妙的策略赢得了最后的胜利(比王琦多一个)。具体对抗形式如下(据田忌)

40-100 60-50 90-70

目前田忌有八匹(速度分别为10、20、30、40、50、60、70、80),王琦也有八匹(速度分别为35、48、56、65、77、98、105、65438+)。如果答案为“是”,请写出田忌获胜场次中两匹马打斗的形式(格式仿照前面的例子,按照田忌马匹从小到大的速度来写)。

3.看程序,写运行结果(7+7+8+8 = 30分。):

1 .程序test 01;

定义变量

x,y,s,p:整数;

开始

readln(x,y);

s:= x+y;p:= x-y;

如果x & lty那么p:= y-x;

s:= s-p;

书写内容;

结束。

输入:

13 31

输出:

2 .程序测试02;

定义变量

I,j,k,t:整数;

答:数组[1..7]的整数;

开始

对于i:=1到7做一个[I]:= 0;

对于i:=1到4做一个[I]:= I;

t:= a[7];

for i:=7 downto 2做a[I]:= a[I-1];

a[1]:= t;

对于i:=1到7做写(a[I]);

结束。

输出:

3 .程序测试03;

定义变量

n,c,I,j,t,temp:整数;

答:数组[1..50]的整数;

开始

readln(n);

对于i:=1到n做read(a[I]);

对于i:=1到n-1 do

开始

c:= a[I];t:= I;

for j:= I+1 to n do if c & lt;a[j]然后开始t:= j;c:= a[j];结束;

如果t & lt& gt然后我开始temp:= a[I];a[I]:= a[t];a[t]:= temp;结束;

结束;

对于i:=1到n做写(a[i],' ');

结束。

输入:

18

90 12 33 44 77 29 8 3 4 6 2 1 21 24 23 54 53 25

输出:

4 .程序测试04;

定义变量

I,j,s,h,v,n:整数;

答:数组[1..20,1..20]的整数;

开始

readln(n,h,v);

对于i:=1到n do

开始

对于j:=1到n做read(a[i,j]);readln

结束;

s:= 0;

对于i:=1到n do

如果i=h那么对于j:=1到n do s:=s+a[i,j];

对于j:=1到n do

若j=v则for i:=1 to n do s:=s+a[i,j];

如果h & lt=v那么

for I:= 1 to n-(v-h)do s:= s+a[I,i+v-h]

else for j:= 1 to n-(h-v)do s:= s+a[j+h-v,j];

for i:=1到2 do s:=s-a[h,v];

书写内容;

结束。

输入:

8 5 3

2 16 18 5 13 13 14 0

3 15 19 14 12 16 5 11

9 1 5 6 1 14 7 5

1 2 6 5 2 12 4 8

3 13 10 1 10 1 12 18

1 5 0 1 4 6 18 0

19 15 7 4 0 2 12 13

8 15 17 0 2 11 16 16

输出:

4.完善程序(根据问题要求和现有程序,在空白处填入适当的句子或符号,使程序完整。这个问题***30分。)

1.旅游美食(3+3+3 = 12分)

大年初一,红旗小学会组织小学生去旅游。冰冰的妈妈给了冰冰100元.为了保证营养,她让冰冰买了N种食物(牛奶、苹果、矿泉水、蜜饯、鸡蛋、面包等)各一份。)来充当中餐和小吃(如果用a[1],a[2]来保存N种食物的价格,...分别为一个[n])。A [1]+A [2]+A [3]+...+A [n]),剩下的钱由兵兵自由支配。

冰冰是一个非常热情的学生。他想把剩下的钱都用来买这些食物中最便宜的,然后打算和其他同学分享。

举个例子,现在妈妈给冰冰20元钱,她要去买一份矿泉水、蜜饯、牛奶、鸡蛋、苹果、面包里的所有东西(价格分别是1、1、3、2、1、4元),那么冰冰剩下的钱就是20-6544。冰冰会把剩下的8块钱全部用来买矿泉水、苹果或者蜜饯(所有东西的最低价都是1元),* * *可以买8份最便宜的。这样,加上冰冰原本购买并打算作为中餐和零食的6份食物,他就有***14份食物了。

在下面的过程中,首先输入冰冰作为中餐和零食的食物数量和冰冰妈妈给冰冰的总份数(用N和S表示,其中S必须小于100),然后输入每种食物的价格,最后输出冰冰拥有的所有食物的总份数。对于前面的示例,输入和输出的示例如下:

样本值输入

6 20

1 1 3 2 1 4

抽样输出

14

请改进以下程序:

程序测试05;

定义变量

n,I,j,tot,min,s:整数;

答:数组[1..50]的整数;

开始

readln(n,s);

对于i:=1到n do begin read(a[I]);s:= s-①;结束;

min:= 32720;

for I:= 1 to n do if min & gt;a[I]then min:=②;

tot:= n;

while min & lt=s do

开始

tot:=③;s:= s-min;

结束;

writeln(④);

结束。

2.跳棋(3+3+3+3+3 = 18点)

跳棋是一种众所周知的棋类活动,即一个棋子可以通过另一个相邻的棋子直接跳到与另一个棋子相邻的空位上。在一长串数字中,如果一个数为K的数等于K位后面数为K的数,则称为跳棋。

例如,对于字符串131313,如果将k指定为1,则三个1构成了跳棋的个数,从第一个1最多可以跳2步;从k的第二位数值3开始,也构成了跳棋的个数,最多可以跳过2步。再比如1223122312341223。如果将k指定为2,则在跳棋数中可以跳过的最大步数为3(每步到达的目的地以“_ _”下划线标出)。也就是说,如果指定了k,那么作为“棋子”的值就是k,每次“跳棋”都要跳过右边相邻的k个位置。

下面的程序首先从键盘输入k的值,然后输入一个由数字组成的字符串(只包括数字0,1,…,9),并规定这个字符串的长度必须是2 * k的倍数,经过处理后,程序最终可以输出两个整数, 它们分别表示从串中第一位k的值最多可以跳过的方格数和步数,以及从串中第二位k的值最多可以跳过的方格数和步数。 请完善程序。

知识链接

1.t:string定义了一个字符串类型变量,S可以存储一个字符串,每个字符串可以存储在对应的变量s[1],s[2],...并且最多可以存储255个字符。

2.t1:=copy(s,I,k) Copy()是一个系统函数,用来从第I个位置复制保存在字符串变量S中的字符串,然后返回复制的字符串(在这个语句中,它被赋给变量t1。

3.val()中的val(t1,a[i1],e)是一个系统化的过程,可以将存储在t1中的数字组成的字符串转换成相应的数值(生成的数值可以进行四则运算),然后将数值保存到下标变量A [i1]中。例如,如果t1的值是字符串“2”,那么调用val()后a[i1]的值就是2的值。

4.length(s)是一个系统函数,用于计算并返回保存在字符串变量s中的字符串的长度(字符数)

样本值输入

123234123234123235123234

抽样输出

3 1

程序测试06;

const maxn = 200

定义变量

x1,x2,I,j,k,n:整数;

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

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

s:字符串;

程序检查(k:整数);

定义变量

I,j,i1,j1,e:整数;

t1,t2:字符串;

开始

I:= 1;I 1:=①;j 1:= 0;x 1:=②;x2:= 0;

而I+2 * k-1 & lt;=n do

开始

t1:=copy(s,I,k);I 1:= I 1+1;val(t1,a[i1],e);I:= I+k;

t2:=copy(s,I,k);j 1:= j 1+1;val(t2,b[j1],e);I:= I+k;

结束;

I:= 1;

while ( ③)和(i & lti1)做什么

begin x 1:=④;I:= I+1;结束;

j:= 1;

while ( ⑤)和(j & ltj1)做什么

begin x2:=⑥;j:= j+1;结束;

结束;

开始{main}

readln(k);

readln(s);n:=长度(s);

检查(k);

writeln(x1,' ',x2);

结束。