NOIP第二十届普及组初赛题目C++和答案Word文件下载.docx
《NOIP第二十届普及组初赛题目C++和答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《NOIP第二十届普及组初赛题目C++和答案Word文件下载.docx(9页珍藏版)》请在冰点文库上搜索。
5.下列对操作系统功能的描述最为完整的是()。
A.负责外设与主机之间的信息交换
B.负责诊断机器的故障
C.控制和管理计算机系统的各种硬件和软件资源的使用
D.将源程序编译成目标程序
6.CPU、存储器、I/O设备是通过()连接起来的。
D.打印机
A.接口B.总线C.控制线
7.断电后会丢失数据的存储器是()。
D.系统文件
A.RAMB.ROMC.硬盘
D.光盘
8.以下哪一种是属于电子邮件收发的协议()。
A.SMTPB.UDPC.P2PD.FTP
9.下列选项中不属于图像格式的是()。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式
10.链表不具有的特点是()。
A.不必事先估计存储空间B.可随机访问任一元素
C.插入删除不需要移动元素D.所需空间与线性表长度成正比
11.下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。
A.296B.133C.256D.199
12.下列几个32位IP地址中,书写错误的是()。
A.162.105.142.27B.192.168.0.1C.256.256.129.1D.10.0.0.1
13.要求以下程序的功能是计算:
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--)
C.s=s+1/n;
D.cout<
14.设变量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;
15.有以下程序:
intmain(){ints,a,n;
s=0;
a=1;
cin>
>
n;
do{s+=1;
a-=2;
}while(a!
=n);
若要使程序的输出值为2,则应该从键盘给n输入的值是()。
A.-1B.-3C.-5D.0
16.一棵具有5层的满二叉树中结点数为()。
A.31B.32C.33D.16
17.有向图中每个顶点的度等于该顶点的()。
A.入度B.出度
C.入度与出度之和D.入度与出度之差
18.设有100个数据元素,采用折半搜索时,最大比较次数为()。
A.6B.7C.8D.10
19.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值,c>
0。
s=a;
for(b=1;
b<
=c;
b++)s+=1;
则与上述程序段功能等价的赋值语句是()。
A.s=a+bB.s=a+cC.s=s+cD.s=b+c
20.计算机界的最高奖是()。
A.菲尔兹奖
B.诺贝尔奖
C.图灵奖
D.普利策奖
二、问题求解(共2题,每题5分,共计10分;
每题全部答对得5分,没有部分分)
1.把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?
(用K表示)。
例如:
M=7,N=3时,K=8;
在这里认为(5,1,1)和(1,5,1)是同一种放置方法。
问:
M=8,N=5时,K=_________。
2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是_________。
三、阅读程序写结果(共4题,每题8分,共计32分)
1.#include<
intmain(){inta,b,c,d,ans;
a>
b>
c;
d=a-b;
a=d+c;
ans=a*b;
"
Ans="
<
ans<
输入:
234输出:
_________
2.#include<
intfun(intn){if(n==1)return1;
if(n==2)return2;
returnfun(n-2)-fun(n-1);
}intmain(){intn;
fun(n)<
7
输出:
3.#include<
#include<
string>
intmain()
{stringst;
inti,len;
getline(cin,st);
len=st.size();
for(i=0;
i<
len;
i++){if(st[i]>
='
a'
&
&
st[i]<
z'
)st[i]=st[i]-'
+'
A'
;
}cout<
st<
}输入:
Hello,mynameisLostmonkey.
4.#include<
constintSIZE=100;
intmain(){intp[SIZE];
intn,tot,i,cn;
tot=0;
for(i=1;
=n;
i++)p[i]=1;
for(i=2;
i++){if(p[i]==1)
tot++;
cn=i*2;
while(cn<
=n){p[cn]=0;
cn+=i;
}}cout<
tot<
四、完善程序(共2题,每题14分,共计28分)
1.(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。
请填空。
(每空3分,共12分)
intdelnum(char*s){inti,j;
j=0;
s[i]!
\0'
i++)if(s[i]<
'
0'
(1)s[i]>
9'
){s[j]=s[i];
(2);
}return(3);
constintSIZE=30;
intmain(){chars[SIZE];
intlen,i;
cin.getline(s,sizeof(s));
len=delnum(s);
i++)
(4);
2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。
输入第一行包含两个整数m和n,即矩阵的行数和列数。
之后m行,每行n个整数,描述整个矩阵。
程序最终输出最大的子矩阵和。
(最后一空4分,其余3分,共
16分)
constintSIZE=100;
intmatrix[SIZE+1][SIZE+1];
introwsum[SIZE+1][SIZE+1];
//rowsum[i][j]记录第i行前j个数的和intm,n,i,j,first,last,area,ans;
intmain(){cin>
m>
=m;
i++)for(j=1;
j<
j++)cin>
matrix[i][j];
ans=matrix
(1);
i++)
(2);
j++)rowsum[i][j]=(3);
for(first=1;
first<
first++)for(last=first;
last<
last++){
i++){area+=(5);
if(area>
ans)ans=area;
if(area<
0)area=0;