第十二届绍兴市少儿信息学奥赛初赛试题PASCALWord文件下载.docx
《第十二届绍兴市少儿信息学奥赛初赛试题PASCALWord文件下载.docx》由会员分享,可在线阅读,更多相关《第十二届绍兴市少儿信息学奥赛初赛试题PASCALWord文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
4.在FreePascal中运行某一程序时,返回如下图所示的错误信息,这是由于()
找不到输入文件
源程序存在2号语法错误
输入变量的值与变量的类型不匹配
Pascal编译器没有正确安装
5.二维数组A的每个元素是由6个字符组成的串。
其行下标从0到8,其列下标从0到9,
若按行优先存储,元素A[7][4]的起始地址与当A按列优先存储时()的起始地址相同,
设每个字符占一个字节。
A[2][8]
A[3][9]
A[5][7]
A[0][8]
6.ASCII码表中的大写字母Z后有6个其他字符,接着便是小写字母。
现在已知:
字母Y的
ASCII码为()2,则字母a的ASCII码用十六进制表示是()
61H
62H
63H
64H
7.下列软件不能用于浏览网页的是()
Firefox
InternetExplorer
Access
腾讯TT
8.路人甲要拍摄一些学校风景照片,并对拍摄的照片进行处理,下列采集工具、加工软件可实
现这一功能的是( )
数码相机、photoshop
扫描仪、goldwave
数码摄像机、goldwave
手机、access
9.某电影的评价如图所示:
图中的评价方式属于( )
个人推荐
统计评价
专家推荐
核心刊物评价
10.某用户微博的相关统计如图所示:
图中的“围观”数主要体现了该用户微博信息的( )
安全性
真伪性
共享性
载体依附性
二、根据要求回答问题:
(5+5=10分)
1.地球人都知道斐波那契数列的递推关系式为:
现在给你一列数2,3,6,8,8,4,2,…,如果用f(n)表示这个数列的第n个数,请写出这个递推式。
2.学校里共有12间宿舍,大宿舍住8人,中宿舍住7人,小宿舍住5人,现在每间宿舍都住满了,共住了80个人,问大、中、小宿舍各有多少间?
三、阅读程序并写出运行结果(8+8+8+8+8=40分):
1.programtest1;
var
a,b,c,d,e,ans:
integer;
begin
readln(a,b,c);
d:
=a+b;
e:
=abs(b-c);
ans:
=trunc((d+e)/(c-a));
writeln(ans);
end.
输入:
125
输出:
______________
2.programtest2;
n,m:
longint;
Begin
Readln(n,m);
n:
=nmod7;
m:
=mmod5;
Ifn>
mthenwriteln(n)
elsewriteln(m)
End.
20142015
输出:
____________
3.programtest3;
n,x,i,temp,j,count:
begin
readln(n,x);
fori:
=1tondo
temp:
=i;
whiletemp>
0do
j:
=tempmod10;
temp:
=tempdiv10;
ifj=xtheninc(count);
end;
end;
writeln(count);
end.
1005
4.programtest4;
var
i,j,k,n:
integer;
a:
array[1..100]ofboolean;
read(n);
=1tondoa[i]:
=true;
=1tondo
begin
whilej<
=ndo
a[j]:
=not(a[j]);
=j+i;
ifa[i]=truethenwrite('
0'
'
'
)
elsewrite('
1'
);
5.programtest5;
type
arr=array[1..8]ofinteger;
a:
arr;
i,n:
procedureselect(varb:
varn:
integer);
var
i,j:
i:
=0;
forj:
ifb[j]mod3=0then
i:
=i+1;
b[i]:
=b[j];
n:
end;
=8;
=1tondoread(a[i]);
readln;
select(a,n);
=1tondowrite(a[i]:
3);
writeln;
8151972336851412
________________________
四、完善程序(根据问题要求和已有程序,在程序空格处填入适当的语句或符号,使程序完整。
本题每空3分,共15+15=30分)
1.打印文件
【问题描述】
路人甲毕业于某职业学校计算机专业,不过,想找一份好工作真难,在路人乙的推荐下,A公司聘请他担任文印室打印员。
每天8点前,A公司的各个部门都会把需要打印的文件送过来。
一天的工作就这样开始了,起先路人甲按照文件送来的先后顺序打印,一段时间后,路人甲觉得这个工作非常无聊,于是决定改变打印的顺序。
首先他要求每个部门对送过来的文件都要标上重要度急别p(1<
=p<
=9),接着他再给送过来的n个文件按先后顺序从0开始标上号码,然后,他按标号从小到大处理打印:
对于当前的第一个文件a,若后面存在一个未打印的文件b,b文件的重要度大于a文件,则将a转移至最后,否则打印文件a。
打印每个文件需1分钟,转移文件可认为是瞬间完成的。
路人甲还充分发挥自己的专业特长,编写了一个程序,只要第一行输入文件数n和需要查询的文件标号x,第二行依次输入n个文件的重要度级别。
就可输出打印x号文件时的时间。
【样例输入】
60
119111
【样例输出】
5
算法:
循环队列模拟。
如果队首元素的优先级不是最高,把队首元素放到最后,其它元素前移,否则,队首元素出队。
programtest6;
constmax=100+10;
typeprinter=record
flag:
priority:
varans,i,k,j,n,m:
printers:
array[0..max]ofprinter;
b:
boolean;
printer;
readln(n,m);
forj:
=0ton-1do
withprinters[j]do
read(priority);
ifj=mthenflag:
=1else①;
whiletruedo
=false;
=1ton-1do
ifprinters[j].priority>
printers[0].prioritythen
=printers[0];
fork:
=1ton-1do②;
printers[n-1]:
=temp;
③
ifnotbthen
inc(ans);
ifprinters[0].flag=1then
④;
break;
end
else
printers[j-1]:
=printers[j];
⑤ ;
2.奖学金
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。
期末,每个学生都有3门课的成绩:
语文、数学、英语。
先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序。
任务:
先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。
注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。
例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:
学号、总分)是:
7279
5279
这两行数据的含义是:
总分最高的两个同学的学号依次是7号、5号。
这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。
如果你的前两名的输出数据是:
则按输出错误处理,不能得分。
【输入】
输入包含n+1行:
第1行为一个正整数n,表示该校参加评选的学生人数。
第2到n+1行,每行有3个用空格隔开的数字,每个数字都在0到100之间。
第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。
每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。
所给的数据保证总分相同的情况下,语文成绩一定不同。
【输出】
输出共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。
【样例输入】
808989
899778
906780
876691
818988
889977
678964
788998
8265
2264
6264
5258
1258
【限制】
100%的数据满足:
6<
=n<
=300
programtest7;
type
lei=record
sum,num,yuwen,shuxue,yingyu:
st:
array[1..500]oflei;
temp:
lei;
i,j,n:
readln(n);
fori:
with①do
begin
num:
readln(yuwen,shuxue,yingyu);
②;
end;
=1to5do
forj:
=③do
begin
ifst[j].sum>
st[i].sumthen
temp:
=st[j];
st[j]:
=st[i];
st[i]:
end
elseif④then
begin
temp:
end
fori:
writeln(⑤,'
st[i].sum);