初赛阅读程序写结果部分
(共4题,每题8分,共计32分。)
注重培养学生的数学运算和归纳能力
这类题型主要是读程序写结果。解决这类问题的关键在于能够分析程序的结构以及程序段的功能。常见的有列表法、画流程图法等。完成这类题目的方法和步骤如下:
(1)从头到尾通读程序,大致把握程序的算法、找出这个题目的即这个程序想干什么。抓住了它,不仅得出答案变得较容易,而且对自己的结果也会比较有信心。
(2)通过给程序分段、理清程序的结构和层次,达到读懂程序的目的
(3)阅读程序中特别注意跟踪主要变量的值的变化,可以用列表的方法,了解变量变化和程序的运行结果,注意发现规律。所谓列表法, 就是将各变量名作为表头,在程序的执行过程中,将各变量值的变化记录在相应变量的下方。
(4)按照程序中输出格式的要求,写出运行结果:
(5)带着得到程序结果回到程序进行检查。
在阅读程序时,要特别注意过程、函数所完成的子任务以及和主程序之间的参数传递关系。在阅读程序中,比较好的方法是首先阅读主程序,看其需要调用的过程或函数是什么,最后要求输出变量是什么;其次在阅读程序中,将较长的程序分成几个程序段(特别注意循环结构、判断结构),阅读理解各程序段的功能以及各程序之间的关联。
一、基础题(知识点包括:分支、循环、数组)重点掌握(mod 和div的应用)
1、第九届普及组第1题
var a,x,y,okl,ok2:integer;
begin
a :=100;x:=l0;y:=20;okl:=5;ok2:=0;
if ((x>y) or((y<>20) and (okl=0)) and (ok2<>0)) then
a:=1
else if((okl<>0) and (ok2=0)) then
a:=-1
else
a:=0;
writeln(a);
end. 输出:。
2、第十届普及组第1题
var
a, b, c, d, e: integer;
begin
a := 79; b:= 34; c := 57; d := 0; e := -1;
if (a<c) or (b>c) then d := d + e
else if (d + 10< e) then d := e + 10
else d := e - a;
writeln(d);
end. 输出: 。
3、第十一届普及组第1题
var
a,b: integer;
begin
read(a);
b:=(a*(a*a))+1;
if bmod 3 = 0 then b := b div 3; if bmod 5 = 0 then b := b div 5;
if bmod 7 = 0 then b := b div 7; if bmod 9 = 0 then b := b div 9;
if bmod 11 = 0 then b := b div 11; if bmod 13 = 0 then b := b div 13;
if bmod 15 = 0 then b := b div 15;
writeln((100*a-b) div 2);
end.
输入:10 输出: 。
4、第九届普及组第3题
var a,b,c,d,sum:longint;
begin
read (a,b,c,d);
a:=amod 23: b:=b mod 28; c:=c mod 33;
sum:=a*5544+b*14421+c*1288-d;
sum:=sum+21252;
sum:=summod 21252;
if(sum=0) then sum:=21252;
writeln(sum);
end.
输入:283 102 23 320 输出:。
5、第七届普及组第3题
var p,q,s,t:integer;
begin
readln(p);
for q:=p+1 to 2*p do
begin
t:=0;
s:=(p*q)mod(q-p);
if s=0 then
begin
t:=p+q+(p*q)div(q-p);
write(t:4);
end;
end;
readln
end.
输入:12
输出: 。
6、