历年CSP-J初赛真题解析 | 2014年CSP-J初赛
附上汇总帖历年CSP-J初赛真题解析 | 汇总单项选择第1题以下哪个是面向对象的高级语言 。A.汇编语言B.CC.FortranD.Basic【答案】B【解析】高级语言对人类更友好如C/C/Python/Pascal/Fortran/Basic。Fortran/Baisc/C都是面向过程的语言第2题1TB代表的字节数是 。A.2的10次方B.2的20次方C.2的30次方D.2的40次方【答案】D【解析】1 T B 1024 ( G ) ∗ 1024 ( M ) ∗ 1024 ( K ) ∗ 1024 2 40 B 1TB1024(G)*1024(M)*1024(K)*10242^{40}B1TB1024(G)∗1024(M)∗1024(K)∗1024240B第3题二进制数00100100和00010101的和是 。A.00101000B.001010100C.01000101D.00111001【答案】D【解析】按位加11需要进位第4题以下哪一种设备属于输出设备 。A.扫描仪B.键盘C.鼠标D.打印机【答案】D【解析】A/B/C都是输入设备第5题下列对操作系统功能的描述最为完整的是 。A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将源程序编译成目标程序【答案】C【解析】A是接口的功能B是操作系统部分功能如BIOS的功能D是编译器功能第6题CPU、存储器、I/O设备是通过 连接起来的。A.接口B.总线C.控制线D.系统文件【答案】B【解析】接口是连接外部设备主机内部是通过主板上的总线连接起来的第7题断电后会丢失数据的存储器是 A.RAMB.ROMC.硬盘D.光盘【答案】A【解析】RAMRandom Access Memory是随机存取存储器断电后会消失。ROMRead Only Memory是只读存储器断电后不会消失。BIOS程序就是放在ROM中。第8题以下哪一种是属于电子邮件收发的协议 。A.SMTPB.UDPC.P2PD.FTP【答案】A【解析】电子邮件协议SMTP和POP3第9题下列选项中不属于图像格式的是 。A.JPEG格式B.TXT格式C.GIF格式D.PNG格式【答案】B【解析】txt是文本格式第10题链表不具有的特点是 。A.不必事先估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比【答案】B【解析】数组可以随机访问但链表需要从头遍历第11题下列各无符号十进制整数中能用八位二进制表示的数中最大的是 。A.296B.1133C.256D.199【答案】D【解析】8位2 8 2^828个0~255第12题下列几个32位IP地址中书写错误的是 。A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1【答案】C【解析】IPv4中4个数字最多只能到255第13题要求以下程序的功能是计算s11/21/3…1/10。#includeiostreamusingnamespacestd;intmain(){intn;floats;s1.0;for(n10;n1;n--)ss1/n;coutsendl;return0;}程序运行后输出结果错误导致错误结果的程序行是 。A.s1.0;B.for(n10; n1; n–)C.ss1/n;D.coutsendl;【答案】C【解析】初值已经是1了所以B答案没错只需要加到1/2。1/n结果是整形需要写成1.0/n第14题设变量x为float型且已赋值 则以下语句中能将x中的数值保留到小数点后两位并将第三位四舍五入的是 。A.x ( x ∗ 100 ) 0.5 / 100.0 ; x(x*100)0.5/100.0;x(x∗100)0.5/100.0;B.x ( x ∗ 100 0.5 ) / 100.0 ; x(x*1000.5)/100.0;x(x∗1000.5)/100.0;C.x ( i n t ) ( x ∗ 100 0.5 ) / 100.0 ; x(int)(x*1000.5)/100.0;x(int)(x∗1000.5)/100.0;D.x ( x ∗ 100 0.5 ) ∗ 100.0 ; x(x*1000.5)*100.0;x(x∗1000.5)∗100.0;【答案】C【解析】可以代入12.3456计算发现C选项正确第15题有以下程序#includeiostreamusingnamespacestd;intmain(){ints,a,n;s0;a1;cinn;do{s1;a-2;}while(a!n);coutsendl;return0;}若要使程序的输出值为2则应该从键盘给n输入的值是 。A.-1B.-3C.-5D.0【答案】B【解析】s2a-3。如果要an结束循环那么n就需要等于-3第16题一棵具有5层的满二叉树中结点数为 。A.31B.32C.33D.16【答案】A【解析】2 n − 1 2^n-12n−1n为5结点数为31第17题有向图中每个顶点的度等于该顶点的 。A.入度B.出度C.入度和出度之和D.入度和出度之差【答案】C【解析】基本概念有向图中顶点的度为入度和出度之和第18题设有100个数据元素采用折半搜索时最大比较次数为 。A.6B.7C.8D.10【答案】B【解析】log10071次502次253次13最大比较次数4次75次46次27次1第19题若有如下程序段其中s、a、b、c均已定义为整型变量且a、c均已赋值c0。sa;for(b1;bc;b)s1;则与上述程序段功能等价的赋值语句是 。A.sabB.sacC.sscD.sbc【答案】B【解析】循环c次每次加1相当于ac第20题计算机界的最高奖是 。A.菲尔兹奖B.诺贝尔奖C.图灵奖D.普利策奖【答案】C【解析】菲尔兹是数学届诺贝尔有五个奖普利策是摄影界问题求解第21题把M个同样的球放到N个同样的袋子里允许有的袋子空着不放问共有多少种不同的放置方法用K表示例如M7N3时K8在这里认为(511)和(151)是同一种放置方法。问M8N5时K 。【答案】18【解析】初赛中直接用枚举法8个球装入1个袋中188个球装入2个袋中417、26、35、448个球装入3个袋中5116、125、134、224、2338个球装入4个袋中51115、1124、1133、1223、22228个球装入5个袋中311114、11123、11222第22题如图所示图中每条边上的数字表示该边的长度则从A到E的最短距离是 。【答案】11【解析】用Dijstra来求也可以直接看出结果311611点标号ABCDEFG从A触发到每个点的最短距离0 ∞ \infty∞ ∞ \infty∞ ∞ \infty∞ ∞ \infty∞ ∞ \infty∞ ∞ \infty∞点标号ABCDEFG从A触发到每个点的最短距离03 ∞ \infty∞ ∞ \infty∞ ∞ \infty∞64点标号ABCDEFG从A触发到每个点的最短距离03481264点标号ABCDEFG从A触发到每个点的最短距离03481254点标号ABCDEFG从A触发到每个点的最短距离03481154阅读程序#includeiostreamusingnamespacestd;intmain(){inta,b,c,d,ans;cinabc;da-b;adc;ansa*b;coutAnsansendl;return0;}第23题输入2 3 4输出 【答案】Ans9【解析】模拟代入运算注意输出格式不含空格#includeiostreamusingnamespacestd;intfun(intn){if(n1)return1;if(n2)return2;returnfun(n-2)-fun(n-1);}intmain(){intn;cinn;coutfun(n)endl;return0;}第24题输入7输出 【答案】-11【解析】fun(7)fun(5)-fun(6)…fun(3)fun(1)-fun(2)计算结果fun(7)-11#includeiostream#includestringusingnamespacestd;intmain(){string st;inti,len;getline(cin,st);lenst.size();for(i0;ilen;i){if(st[i]ast[i]z)st[i]st[i]-aA;}coutstendl;return0;}第25题输入Hello, my name is Lostmonkey.输出 【答案】HELLO, MY NAME IS LOSTMONKEY.【解析】第10到第11行就是将小写字母转为大写字母#includeiostreamusingnamespacestd;constintSIZE100;intmain(){intp[SIZE];intn,tot,i,cn;tot0;cinn;for(i1;in;i)p[i]1;for(i2;in;i){if(p[i]1)tot;cni*2;while(cnn){p[cn]0;cni;}}couttotendl;return0;}第26题输入30输出 【答案】10【解析】第13至第16行是为了将i的倍数都置为0。只有质数不是任何数的倍数。30以内的质数有2,3,5,7,11,13,17,19,23,29共10个完善程序数字删除下面程序的功能是将字符串中的数字字符删除后输出。请填空。#includeiostreamusingnamespacestd;intdelnum(char*s){inti,j;j0;for(i0;s[i]!\0;i)if(s[i]0__1__ s[i]9){s[j]s[i];__2__;}return__3__;}constintSIZE30;intmain(){chars[SIZE];intlen,i;cin.getline(s,sizeof(s));lendelnum(s);for(i0;ilen;i)cout__4__;coutendl;return0;}第27题1处填 【答案】||【解析】目的是判断非数字的字符保留下来第28题2处填 【答案】j【解析】非数字字符也存在s中使用j下标来记录第29题3处填 【答案】j【解析】最后一个非数字字符赋值完后j后就是新的字符串的长度第30题4处填 【答案】s[i]【解析】基于新的字符串长度不是之前的长度输出所有字符最大子矩阵和给出m行n列的整数矩阵求最大的子矩阵和子矩阵不能为空。输入第一行包含两个整数m和n即矩阵的行数和列数。之后m行每行n个整数描述整个矩阵。程序最终输出最大的子矩阵和。#includeiostreamusingnamespacestd;constintSIZE100;intmatrix[SIZE1][SIZE1];introwsum[SIZE1][SIZE1];//rowsum[i][j]记录第i行前j个数的和intm,n,i,j,first,last,area,ans;intmain(){cinmn;for(i1;im;i)for(j1;jn;j)cinmatrix[i][j];ansmatrix__1__;for(i1;im;i)__2__;for(i1;im;i)for(j1;jn;j)rowsum[i][j]__3__;for(first1;firstn;first)for(lastfirst;lastn;last){__4__;for(i1;im;i){area__5__;if(areaans)ansarea;if(area0)area0;}}coutansendl;return0;}第31题1处填 【答案】[1][1]【解析】使用matrix第1行第1列的值作为ans的最大值初值这里并没有使用-1e9作为最大值的初值第32题2处填 【答案】rowsum[i][0] 0【解析】为每一行的前缀和赋初值为0感觉不赋值也行第33题3处填 【答案】rowsum[i][j-1]matrix[i][j]【解析】前缀和的计算公式第34题4处填 【答案】area 0【解析】每一次计算子矩阵和就需要初始化初值为0第35题5处填 【答案】rowsum[i][last] - rowsum[i][first-1]【解析】area需要依次增加每行每段起始列~终止列的前缀和