第十二届全国青少年信息学奥林匹克联赛初赛试题及答案普及组、C语言.doc
第十二届全国青少年信息学奥林匹克联赛初赛试题及答案普及组、C语言第十二届全国青少年信息学奥林匹克联赛初赛试题及答案普及组、C语言普及组 C语言 二小时完成) 一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案) 1在下面各世界顶级的奖项中,为计算机科学与技术领域做出出色奉献的科学家设立的奖项是( )。A沃尔夫奖 B诺贝尔奖 C菲尔兹奖 D图灵奖 2在下面各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境是( )。Agcc/g+ BTurbo Pascal CRHIDE Dfree pascal 3以下断电之后仍能保存数据的有( )。A存放器 BROM CRAM D高速缓存 4Linu_是一种( )。A绘图软件 B程序设计语言 C操作系统 D网络阅读器 5是( )的简称。A硬盘 B中央处理器 C高级程序语言 D核心存放器 6在计算机中,防火墙的作用是( )。A防止火灾蔓延 B防止网络攻击 C防止计算机死机 D防止使用者误删除数据 7在以下关于计算机语言的说法中,不正确的选项是( )。APascal和C都是编译执行的高级语言 B高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 CC+是历史上的第一个支持面向对象的计算机语言 D与汇编语言相比,高级语言程序更容易阅读 8在以下关于计算机算法的说法中,不正确的选项是( )。A一个正确的算法至少要有一个输入 B算法的改良,在很大程度上推进了计算机科学与技术的进步 C判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性 D目前仍然存在许多涉及到国计民生的重大课题,还没有找到可以在计算机上施行的有效算法 9在以下各种排序算法中,不是以“比拟”作为主要操作的算法是( )。A选择排序 B冒泡排序 C插入排序 D基数排序 10在编程时(使用任一种高级语言,不一定是C),假如需要从磁盘文件中输入一个很大的二维数组(例如1000_1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。A没有区别 B按行读的方式要高一些 C按列读的方式要高一些 D取决于数组的存储方式 11在C语言中,表达式212的值是( )。A441 B42 C23 D24 12在C语言中,判断a不等于0且b不等于0的正确的条件表达式是( )。A!a=0 | !b=0 B!(a=0)(b=0) C!(a=0b=0) Dab 13某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。某时刻该车站状态为空,从这一时刻开场的出入记录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的顺序为1,2,3,那么车辆出站的顺序为( )。A1,2,3,4,5 B1,2,4,5,7 C1,4,3,7,6 D1,4,3,7,2 14高度为n的平衡的二叉树是指:假如去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于结点的最大深度,根结点的深度为0,假如某个平衡的二叉树共有2381个结点,那么该树的树高为( )。A10 B11 C12 D13 15与十进制数1770对应的八进制数是( )。A3350 B3351 C3352 D3540 16将5个数的序列排序,不管原先的顺序如何,最少都可以通过( )次比拟。完成从小到大的排序。A6 B7 C8 D9 17设A=B=D=ture,C=false,以下逻辑运算表达式值为真的有( )。A(AB)(CD) B(ABD)C) CA(BCD) D(ABC)D 18(2022)16+(32)8的结果是( )。A(8234)10 B(202B)16 C(20_56)8 D(100000000110)2 19设栈S的初始状态为空,元素a,b,c,d,e依次入栈,以下出栈序列不可能出现的有( )。Aa,b,c,e,d Bb,c,a,e,d Ca,e,c,b,d Dd,c,e,b,a 206个结点的二叉树的先根+遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,那么该二叉树的可能的中根遍历是( )。A3 2 1 4 6 5 B3 2 1 5 4 6 C2 1 3 5 4 6 D2 3 1 4 6 5 二、问题求解(共2题,每题5分,共计10分) 1(寻找假币)现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都一样,假如使用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:_。2(取石子游戏)现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取),取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?假如有,甲第一步应该在哪一堆里取多少?请写出你的结果:_。三、阅读程序写结果(共4题,每题8分,共计32分) 1. #include int main int i,u4,a,b,_,y=10; for(i=0;i10) y+=(b_100-u3)/(uu03_5); else y+=20+(b_100-u3)/(uu03_5); printf(“d,dn“,_,y); return 0; /_注:本例中,给定的输入数据可以防止分母为0或下标越界。_/ 输入:9 3 9 4 输出:_2. #include main int i,j,m=2,3,5,7,13; long t; for(i=0;i0) j-; return j; int main char sN+1; int k,p; for(k=1;k void digit(long n,long m) if(m>0) printf(“2ld“,n10); if(m>1) digit(n/10,m/10); printf(“2ld“,n10); main long _,_2; printf(“Input a number:n“); scanf(“ld“,_); _2=1; while(_2 int n,a10; /_a1,a2,an构成n个数的一个排列_/ long count=0; /_变量count记录不同排列的个数,这里用于控制换行_/ void perm(int k) int j,p,t; if(_) count+; for(p=1;p main long p,a,b,c,t,n; int bl; while(1) printf(“输入p,最后一位为1或3或7或9:n“); scanf(“ld“,p); if(p2!=0)(p5!=0) /_ 假如输入的数符合要求,完毕循环 _/ _; a=0; n=0; while(a0); printf(“nn=ldn“,_); 一、选择一个正确答案代码A/B/C/D/E,填入每题的括号内 (每题1.5分,多项选择无分, 共30 分) 题号 1 2 4 5 6 7 8 9 10 选择 D B B C B B C A D D 题号 11 12 13 14 15 16 17 18 19 20 选择 C D C B C B B A C B 二、问题求解(共2题,每题5分,共计10分) 1. 4次 (1分)第一步:分成3组:27,27,26,将前2组放到天平上4分。2. 有获胜策略(1分)第1次在第5堆中取32颗石子(4分)。三、阅读程序写结果(共4题,每题8分,共计32分) 1. 10,10 对1个数给4分,无逗号扣1分2. 6 28 496 8128 33550336 (前2个对1个数给1分,后3个对1个数给2分) 3.5 4. 6 2 5 4 3 7 9 9 7 3 4 5 2 6数字之间无空格扣2分四、完善程序(前4空,每空2.5分,后6空,每空3分,共28分) 1. k=n count5=0 perm(k+1) ak=aj; aj=t perm(1) 2. break t50=0 a-p_b c_10+1 n-1 第 5 页 共 5 页