NOIP2014初赛普及其组C++题目及其答案解析.doc
.*第二十届全国青少年信息学奥林匹克联赛初赛普及组C+语言试题2014年一、 快单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)以下哪个是面向对象的高级语言()。A.汇编语言B.C+C.FortranD.Basic1TB代表的字节数是()。A.2的10次方B.2的20次方C.2的30次方D.2的40次方二进制数00100100和00010101的和是()。A.00101000B.001010100C.01000101D.00111001以下哪一种设备属于输出设备()。A.扫描仪B.键盘C.鼠标D.打印机下列对操作系统功能的描述最为完整的是()。A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序CPU、存储器、I/O设备是通过()连接起来的。A. 接口B.总线C.控制线D.系统文件断电后会丢失数据的存储器是()。A.RAMB.ROMC.硬盘D.光盘以下哪一种是属于电子邮件收发的协议()。A.SMTPB.UDPC.P2PD.FTP下列选项中不属于图像格式的是()。A. JPEG格式B.TXT格式C.GIF格式D.PNG格式链表不具有的特点是()。A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。A.296B.133C.256D.199下列几个32位IP地址中,书写错误的是()。A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1要求以下程序的功能是计算:s=1+1/2+1/3+.+1/10。#include<iostream>usingnamespacestd;intmain()intn;floats;s=1.0;for(n=10;n>1;n-)s=s+1/n;cout<<s<<endl;return0;程序运行后输出结果错误,导致错误结果的程序行是()。A.s=1.0;B.for(n=10;n>1;n-)C.s=s+1/n;D.cout<<s<<endl;设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是()。A.x=(x*100)+0.5/100.0; B.x=(x*100+0.5)/100.0;C.x=(int)(x*100+0.5)/100.0; D.x=(x/100+0.5)*100.0;有以下程序#include<iostream>usingnamespacestd;intmain()ints,a,n;s=0;a=1;cin>>n;dos+=1;a-=2;while(a!=n);cout<<s<<endl;return0;若要使程序的输出值为2,则应该从键盘给n输入的值是()。A.-1B.-3C.-5D.0一棵具有5层的满二叉树中结点数为()。A.31B.32C.33D.16有向图中每个顶点的度等于该顶点的()。A.入度B.出度C.入度和出度之和D.入度和出度之差设有100个数据元素,采用折半搜索时,最大比较次数为()。A.6B.7C.8D.10若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值,c>0。s=a;for(b=1;b<=c;b+)s+=1;则与上述程序段功能等价的赋值语句是()。A.s=a+b B.s=a+cC.s=s+cD.s=b+c计算机界的最高奖是()。A.菲尔兹奖B.诺贝尔奖C.图灵奖D.普利策奖二、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)1.把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用K表示)。例如,M7,N3时,K8;在这里认为和是同一种放置方法。问:M8,N5时,K 。2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是。三、阅读程序写结果(共4题,每题8分,共计32分)1.#include<iostream>usingnamespacestd;intmain()inta,b,c,d,ans;cin>>a>>b>>c;d=a-b;a=d+c;ans=a*b;cout<<"Ans="<<ans<<endl;return0;输入:234输出:Ans= 2.#include<iostream>usingnamespacestd;intfun(intn)if(n=1)return1;if(n=2)return2;returnfun(n-2)-fun(n-1);intmain()intn;cin>>n;cout<<fun(n)<<endl;return0;输入:7输出: 3.#include<iostream>#include<string>usingnamespacestd;intmain()stringst;inti,len;getline(cin,st);len=st.size();for(i=0;i<len;i+)if(sti>=a&&sti<=z) sti=sti-a+A;cout<<st<<endl;return0;输入:Hello,mynameisLostmonkey.输出: 4.#include<iostream>usingnamespacestd;constintSIZE=100;intmain()intpSIZE;intn,tot,i,cn;tot=0;cin>>n;for(i=1;i<=n;i+)pi=1;for(i=2;i<=n;i+) if(pi=1) tot+;cn=i*2;while(cn<=n)pcn=0;cn+=i;cout<<tot<<endl; return0;输入:30输出: 四、完善程序(共2题,共计28分)1.(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。请填空。(每空3分,共12分)#include<iostream>usingnamespacestd;intdelnum(char*s)inti,j;j=0;for(i=0;si!=0;i+)if(si<0 si>9)sj=si; ;return ;constintSIZE=30;intmain()charsSIZE;intlen,i;cin.getline(s,sizeof(s); len=delnum(s);for(i=0;i<len;i+)cout<< ;cout<<endl;return0;2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。输入第一行包含两个整数m和n,即矩阵的行数和列数。之后m行,每行n个整数,描述整个矩阵。程序最终输出最大的子矩阵和。(最后一空4分,其余3分,共16分)比如在如下这个矩阵中:4 40-2-7092-62-41-41-180-2拥有最大和的子矩阵为:92-41-18其和为153 3-21020-1100-20-2-3最大子矩阵和为1284 40-2-9-9-91157-4-3-7-6-1 7 7 5最大子矩阵和为26#include<iostream>usingnamespacestd;constintSIZE=100;intmatrixSIZE+1SIZE+1;introwsumSIZE+1SIZE+1;/rowsumij记录第i行前j个数的和intm,n,i,j,first,last,area,ans;intmain()cin>>m>>n;for(i=1;i<=m;i+)for(j=1;j<=n;j+)cin>>matrixij;ans=matrix ;for(i=1;i<=m;i+) for(i=1;i<=m;i+)for(j=1;j<=n;j+)rowsumij= ; for(first=1;first<=n;first+)for(last=first;last<=n;last+) ;for(i=1;i<=m;i+)area+= ;if(area>ans)ans=area;if(area<0)area=0;cout<<ans<<endl;return0;第二十届全国青少年信息学奥林匹克联赛初赛普及组参考答案一、单项选择题(共20题,每题1.5分,共计30分)12345678910BDDDCBAABB11121314151617181920DCCCBACBBC二、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)1.182.11三、阅读程序写结果(共4题,每题8分,共计32分)1.Ans=92.-113.HELLO,MYNAMEISLOSTMONKEY.4.10四、完善程序(共计28分,以下各程序填空可能还有一些等价的写法,由各省赛区组织本省专家审定及上机验证,可以不上报CCFNOI科学委员会复核)Pascal语言C+语言C语言分值1.(1)or|3(2)j:=j+1或inc(j)j+或j=j+1或+j3(3)j3(4)si32.(1)1,1113(2)rowsumi,0:=0rowsumi0=03(3)rowsumi,j-1+matrixi,jrowsumij-1+matrixij3(4)area:=0area=03(5)rowsumi,last-rowsumi,first-1rowsumilast-rowsumifirst-14