2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题一、选择题(每题有且仅有一个正确答案,选对得1.5分,选错、不选或多选均失分)1.存放一个ASCII码需要的字节数为(A)1字节(B)2字节(C)0.5字节(D)4字节2.下列软件中不属于操作系统的是(A)win7(B)linux(C)winxp(D)winrar3.下列数中最小的是(A)(7)8(B)(11)7(C)(15)10(D)(11)54.世界上第一台电子计算机诞生于(A)1949(B)1849(C)1946(D)18935.在下面各奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项是(A)沃尔夫奖(B)诺贝尔奖(C)菲尔兹奖(D)图灵奖6.操作系统的文件夹采用的层次结构为(A)网状(B)链状(C)树状(D)块状7.在pascal语言中,pos(‘a’,’bbccc’)的返回值为(A)0(B)-1(C)5(D)’a’8.在pascal语言中,下列语句属于正确的赋值语句的是(A)s:=1(B)s=a+1(C)a+1=s(D)a+1:=s9.计算圆周长的算法描述如下:①输入圆半径r;②计算圆周长a(计算公式为a=2πr);③输出结果;④结束。
该算法属于(A)枚举算法(B)递归算法(C)排序算法(D)以上都不是10.现有一个数列A为1,2,3,另一个数列B为3,2,1,若采用选择排序分别的两个数列实现从小到大排序,则两个数列需要的比较次数为(A)A比B多(B)A和B一样多(C)B比A多(D)不一定11.在下述程序段中,判断语句a<>100被执行的次数为a:=99while a<>100doa:=a+1;(A)0(B)1(C)2(D)312.下面关于堆栈和队列的说法中错误的是(A)队列是一种先进先出的线性表(B)堆栈可以选择栈的任意位置进行弹出操作(C)堆栈只能选择栈顶进行压入操作(D)堆栈是一种先进后出的线性表13.下列说法中不属于计算机病毒特点的是(A)破坏性(B)传染性(C)潜伏性(D)抗药性14.程序设计的三种基本结构是(A)主程序、函数、过程(B)顺序、选择、循环(C)变量、常量、不定量(D)数组、字符串、浮点型15.下列内容中属于信息的是(A)报纸(B)黑板(C)课本(D)黑板上的放假通知16.在pascal语言中,记录类型用到的保留字为(A)record(B)struct(C)baidu(D)then17.某班有30个同学报名参加100、400、800m3个运动项目比赛。
已知有6人获100m参赛资格,8人获400m参赛资格,18人获800m参赛资格。
且其中有1人获全部3项参赛资格,则至少有()人没有获任何项目参赛资格。
(A)0(B)1(C)2(D)318.下列pascal语言的函数中,返回值不是数值类型的是(A)pos(B)copy(C)length(D)abs19.下列判断语句中,不能判断x为奇数的是(A)odd(x)=true(B)odd(x)<>false(C)x and1<>x(D)(x shr1)shl1<>x20.小李在递归函数内部定义了一个长度为100的longint数组,但是编译运行却频频报错,请问最有可能的原因是(A)代码风格不够优美(B)程序效率太低导致超时(C)显示器亮度不够(D)递归层次过多导致栈空间不足二.问题求解(每小题5分,共10分)1.在1到100的100个整数中,能被3整除且不能被4整除的数一共有个。
2.定义2个1000*1000的二维长整型数组需要的存储空间为MB。
(保留1位小数)三、阅读程序写结果(每题8分,共32分)1.Var x:longint;flag:boolean;beginread(x);flag:=false;if(x mod4=0)and(x mod100<>0)then flag:=true;if x mod400=0then flag:=true;if flag then writeln(‘leap year!’)else writeln(‘not a leap year!’);end.输入:1234输出:2.Var f:array[1..100,1..100]of longint;cnt:longint;i,j,n,t,x,y,ans:longint; beginread(n);x:=1;y:=0;for i:=1to n dobeginfor j:=1to n*2-i+1dobegininc(y);inc(cnt);f[x,y]:=cnt;end;for j:=1to n*2-i dobegininc(x);inc(cnt);f[x,y]:=cnt;end;for j:=1to n*2-i dobegindec(y);dec(cnt);f[x,y]:=cnt;end;for j:=1to n*2-i-1dobegindec(x);dec(cnt);f[x,y]:=cnt;end;end;read(t);ans:=0;for i:=1to n*2doans:=ans+f[t,i];writeln(ans);end.输入:32输出:3.Var t:longint;function f(x:longint):longint;beginif x=0then exit(0)else if x mod2=0then exit(2+f(x-1))else exit(1+f(x-1)); end;beginread(t);writeln(f(t));end.输入:2014输出:4.type arr=array[0..100000]of longint;var c,q,d,e,ans:arr;n,i:longint;procedure merge(a,b:longint);var mid,i,j,p:longint;beginmid:=(a+b)div2;if a<mid then merge(a,mid);if mid+1<b then merge(mid+1,b);p:=0;i:=a;j:=mid+1;while(i<=mid)and(j<=b)dobeginif c[i]>=c[j]thenbeginp:=p+1;d[p]:=c[i];e[p]:=q[i];i:=i+1;endelsebeginp:=p+1;d[p]:=c[j];e[p]:=q[j];j:=j+1;inc(ans[e[p]],mid-i+1);end;end;while(i<=mid)and(j>b)dobeginp:=p+1;d[p]:=c[i];e[p]:=q[i];i:=i+1;end;while(i>mid)and(j<=b)dobeginp:=p+1;d[p]:=c[j];e[p]:=q[j];j:=j+1;end;for i:=a to b dobeginc[i]:=d[i-a+1];q[i]:=e[i-a+1];end;end;beginreadln(n);for i:=1to n dobeginread(c[i]);q[i]:=i;end;merge(1,n);for i:=1to n-1dowrite(ans[i],’,’);writeln(ans[n]);end.输入:543125输出:四.程序填空(前5空,每空2分,后6空,每空3分,共28分)1.问题描述:小明手头有一份红十字会的捐款名单,但是这份名单被外星人恶意破坏过,你的任务是帮助小明去恢复这份名单。
由于外星人低估了你的智商,破坏的规则非常简单,先是将姓名和捐款金额联接到一行,再将这一行内容按顺序切成多行。
输入格式:有很多行,表示输入的字符串。
输出格式:输出共有多行,其中每一个人的信息一行,分别是姓名和金额,中间用空格隔开。
输入样例:zhangsan890liuhua111输出样例:zhangsan890liuhua111vars,t:ansistring;x,len,i:longint;flag:boolean;begins:=‘‘;while not⑴dobeginreadln(t);s:=s+t;end;len:=length(s);t:=‘‘;x:=0;flag:=false;for i:=1to len dobeginif(s[i]<=‘9’)and(s[i]>=‘0’)thenbeginx:=⑵+ord(s[i])–ord(‘0’);if flag=false then⑶;endelsebeginif flag=true thenbegin⑷;x:=0;t:=‘‘;⑸;end;t:=t+s[i];end;end;writeln(t,‘‘,x);end.2.问题描述:有一天小明来到一台神奇的取款机前,取款机可以无限提供某些特定面额的货币,小明想知道他要取出x元共存在几种不同的方案(取出顺序的不一样认为是相同的方案,具体以样例为准)。
输入格式:第一行一个整数m,表示提供的货币种数。
第二行共m个用空格隔开的数字,表示其具体面额。
第三行一个整数x,表示需要取出的钱额。
输出格式:输出一个整数,表示方案数。
输入样例:31254输出样例:3输出说明:取出4元的3种方案分别为(2,2),(1,1,2),(1,1,1,1)。
vardp:array[⑹..10001]of longint;a:array[1..10]of longint;i,j,x,m:longint;beginread(m);for i:=1to m do read(a[i]);⑺;fillchar(dp,sizeof(dp),0);dp[0]:=⑻;for i:=1to m dofor j:=0to x dobeginif⑼then break;if dp[j]=0then⑽;dp[j+a[i]]:=dp[j+a[i]]+⑾;end;writeln(dp[x]);end.。