历年NOIPCSP 普及提高 初赛真题.docx
《历年NOIPCSP 普及提高 初赛真题.docx》由会员分享,可在线阅读,更多相关《历年NOIPCSP 普及提高 初赛真题.docx(36页珍藏版)》请在冰豆网上搜索。
![历年NOIPCSP 普及提高 初赛真题.docx](https://file1.bdocx.com/fileroot1/2023-2/24/37252b1d-d872-4dde-8676-a550bc8c84e6/37252b1d-d872-4dde-8676-a550bc8c84e61.gif)
历年NOIPCSP普及提高初赛真题
历年NOIP/CSP普及/提高初赛真题
普及组(120分钟)
1在以下各项中,()不是CPU的组成部分
A.控制器
B.运算器
C.寄存器
D.主板
本题共1分
第2题
在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。
A.二叉树
B.多叉树
C.哈希表
D.二维表
本题共1.5分
第3题
在下列各项中,只有()不是计算机存储容量的常用单位。
A.Byte
B.KB
C.UB
D.TB
本题共1.5分
第4题
ASCII码的含义是()。
A.二→十进制转换码
B.美国信息交换标准代码
C.数字的二进制编码
D.计算机可处理字符的唯一编码
本题共1.5分
第5题
一个完整的计算机系统应包括()。
A.系统硬件和系统软件
B.硬件系统和软件系统
C.主机和外部设备
D.主机、键盘、显示器和辅助存储器
本题共1.5分
第6题
IT的含义是()。
A.通信技术
B.信息技术
C.网络技术
D.信息学
本题共1.5分
第7题
LAN的含义是()。
A.因特网
B.局域网
C.广域网
D.城域网
本题共1.5分
第8题
冗余数据是指可以由其它数据导出的数据。
例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。
冗余数据往往会造成数据的不一致。
例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。
下面关于冗余数据的说法中,正确的是()。
A.应该在数据库中消除一切冗余数据
B.用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据
C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容性检验
D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据
本题共1.5分
第9题
在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。
编者注:
这是2007年
A.gcc
B.g++
C.TurboC
D.FreePascal
本题共1.5分
第10题
以下断电后仍能保存数据的有()。
A.硬盘
B.高速缓存
C.显存
D.RAM
本题共1.5分
第11题
在下列关于计算机语言的说法中,正确的有()。
A.高级语言比汇编语言更高级,是因为它的程序的运行效率更高
B.随着Pascal、C等高级语言的出现,机器语言和汇编语言已经退出了历史舞台
C.高级语言比汇编语言程序更容易从一种计算机上移植到另一种计算机上
D.C是一种面向对象的高级计算机语言
本题共1.5分
第12题
近20年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力的工具。
在下列关于递归算法的说法中,正确的是()。
A.在1977年前后形成标准的计算机高级语言“FORTRAN77”禁止在程序使用递归,原因之一是该方法可能会占用更多的内存空间
B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些
C.对于较复杂的问题,用递归方式编程一般比非递归方式更难一些
D.对于已经定义好的标准数学函数sin(x),应用程序中的语句“y=sin(sin(x));”就是一种递归调用
本题共1.5分
第13题
一个无法靠自身的控制终止的循环成为“死循环”,例如,在C语言程序中,语句while
(1)printf("*");就是一个死循环,运行时它将无休止地打印*号。
下面关于死循环的说法中,只有()是正确的。
A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检查
B.有些编译系统可以检测出死循环
C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环
D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也可以检测的
本题共1.5分
第14题
在C语言中,表达式23|2^5的值是()
A.18
B.1
C.23
D.32
本题共1.5分
第15题
在C语言中,判断a等于0或b等于0或c等于0的正确的条件表达式是()。
A.!
((a!
=0)||(b!
=0)||(c!
=0))
B.!
((a!
=0)&&(b!
=0)&&(c!
=0))
C.!
(a==0&&b==0)||(c!
=0)
D.(a=0)&&(b=0)&&(c=0)
本题共1.5分
第16题
地面上有标号为A、B、C的三根柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下依次编号为1,2,3……,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。
如果B柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。
那么,在C柱上,从下到上的编号为()。
A.243657
B.241257
C.243176
D.243675
本题共1.5分
第17题
与十进制数1770对应的八进制数是()。
A.3350
B.3351
C.3352
D.3540
本题共1.5分
第18题
设A=B=True,C=D=False,一下逻辑运算表达式值为假的有()。
A.(﹁A∧B)∨(C∧D∨A)
B.﹁(((A∧B)∨C)∧D)
C.A∧(B∨C∨D)∨D
D.(A∧(D∨C))∧B
本题共1.5分
第19题
(2070)_{16}+(34)_8(2070)
16
+(34)
8
的结果是()。
A.(8332)_{10}(8332)
10
B.(208A)_{16}(208A)
16
C.(100000000110)_2(100000000110)
2
D.(20212)_8(20212)
8
本题共1.5分
第20题
已知7个节点的二叉树的先根遍历是1245637(数字为节点的编号,以下同),中根遍历是4265173,则该二叉树的后根遍历是()。
A.4652731
B.4652137
C.4231547
D.4653172
本题共1.5分
第21题
(子集划分)将n个数(1,2,…,n)划分成r个子集。
每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。
将不同划分方法的总数记为S(n,r)。
例如,S(4,2)=7,这7种不同的划分方法依次为{
(1),(234)},{
(2),(134)},{(3),(124)},{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。
当n=6,r=3时,S(6,3)=______________。
(提示:
先固定一个数,对于其余的5个数考虑S(5,3)与S(5,2),再分这两种情况对原固定的数进行分析。
)
本题共5分
第22题
(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有7条南北向的纵街,5条东西向的横街。
现要从西南角的A走到东北角的B,最短的走法共有多少种?
___________
本题共5分
第23题
看程序写结果:
#include
intmain()
{
inti,p[5],a,b,c,x,y=20;
for(i=0;i<=4;i++)
scanf("%d",&p[i]);
a=(p[0]+p[1])+(p[2]+p[3]+p[4])/7;
b=p[0]+p[1]/((p[2]+p[3])/p[4]);
c=p[0]*p[1]/p[2];
x=a+b-p[(p[3]+3)%4];
if(x>10)
y+=(b*100-a)/(p[p[4]%3]*5);
else
y+=20+(b*100-c)/(p[p[4]%3]*5);
printf("%d,%d\n",x,y);
return(0);
}
{注:
本例中,给定的输入数据可以避免分母为0或数组元素下表越界。
}输入:
66553
本题共8分
第24题
看程序写结果:
#include
voidfun(int*a,int*b)
{
int*k;
k=a;a=b;b=k;
}
main()
{
inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d,%d",a,b);
}
输出:
_______________________________
本题共8分
第25题
看程序写结果:
#include"math.h"
#include"stdio.h"
main()
{
inta1[51]={0};
inti,j,t,t2,n=50;
for(i=2;i<=sqrt(n);i++)
if(a1[i]==0)
{
t2=n/i;
for(j=2;j<=t2;j++)
a1[i*j]=1;
}
t=0;
for(i=2;i<=n;i++)
if(a1[i]==0)
{
printf("%4d",i);t++;
if(t%10==0)
printf("\n");
}
printf("\n");
}
本题共8分
第26题
看程序写结果:
#include"ctype.h"
#include"stdio.h"
voidexpand(chars1[],chars2[])
{
inti,j,a,b,c;
j=0;
for(i=0;(c=s1[i])!
='\0';i++)
if(c=='-')
{
a=s1[i-1];b=s1[i+1];
if(isalpha(a)&&isalpha(b)||isdigit(a)&&isdigit(b))
/*函数isalpha(a)用于判断字符a是否为字母,isdigit(b)用于判断字符b是否为数字,如果是,返回1,否则返回0*/
{
j--;
do
s2[j++]=a++;
while(tolower(a)}
/*函数tolower(a)的功能是当字符a是大写字母,改为小写,其余情况不变*/
elses2[j++]=c;
}elses2[j++]=c;
s2[j]='\0';
}
main()
{
chars1[100],s2[300];
printf("inputs1:
");
gets(s1);
expand(s1,s2);
printf("%s\n",s2);
}
输入:
wer2345d-h454-82qqq
本题共8分
第27题
完善程序:
(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1终止程序。
请将程序补充完整。
#include
#include
intmaxline=200,kz;
intreverse(chars[])
{
inti,j,t;
for(i=0,j=strlen(s)-1;i{
t=s[i];s[i]=s[j];s[j]=t;
}
return(0);
}
voidmain()
{
charline[100];
cout<<"continue?
-1forend."<cin>>kz;
while(【③】)
{
cin>>line;
【④】;
cout<cout<<"continue?
-1forend."<cin>>kz;
}
}
1.
2.
3.
4.
本题共8分
第28题
完善程序:
(棋盘覆盖问题)在一个2^k\times2^k2
k
×2
k
个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为-1的方格),称之为特殊方格。
现用L型(占3个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4^k-1)/3(4
k
−1)/3。
在下表给出的一个覆盖方案中,k=2,相同的3各数字构成一个纸片。
下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。
请将程序补充完整。
2233
2-113
4115
4455
#include
#include
intboard[65][65],tile;/*tile为纸片编号*/
voidchessboard(inttr,inttc,intdr,intdc,intsize)
/*dr,dc依次为特殊方格的行、列号*/
{
intt,s;
if(size==1)
⑤;
t=tile++;
s=size/2;
if(⑥)
chessboard(tr,tc,dr,dc,s);
else{
board[tr+s-1][tc+s-1]=t;
[⑦];
}
if(dr
=tc+s)chessboard(tr,tc+s,dr,dc,s);
else{
board[tr+s-1][tc+s]=t;
⑧;
}
if(dr>=tr+s&&dcchessboard(tr+s,tc,dr,dc,s);
else{
board[tr+s][tc+s-1]=t;
[⑨];
}
if(dr>=tr+s&&dc>=tc+s)
chessboard(tr+s,tc+s,dr,dc,s);
else{board[tr+s][tc+s]=t;
[⑩];}
}
voidprtl(intb[][65],intn)
{
inti,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<cout<}
}
voidmain()
{
intsize,dr,dc;
cout<<"inputsize(4/8/16/64):
"<cin>>size;
cout<<"inputthepositionofspecialblock(x,y):
"<cin>>dr>>dc;
board[dr][dc]=-1;
tile++;
chessboard(1,1,dr,dc,size);
prtl(board,size);
}
1.
2.
3.
4.
5.
6.
本题共18分
提高组(120分钟)
第1题
在以下各项中,()不是CPU的组成部分。
A.控制器
B.运算器
C.寄存器
D.主板
E.算术逻辑单元(ALU)
本题共1.5分
第2题
在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。
A.二叉树
B.多叉树
C.哈希表
D.B+树
E.二维表
本题共1.5分
第3题
在下列各项中,只有()不是计算机存储容量的常用单位。
A.Byte
B.KB
C.MB
D.UB
E.TB
本题共1.5分
第4题
ASCII码的含义是()。
A.二—十进制转换码
B.美国信息交换标准代码
C.数字的二进制编码
D.计算机可处理字符的唯一编码
E.常用字符的二进制编码
本题共1.5分
第5题
在C语言中,表达式23|2^5的值是()
A.23
B.1
C.18
D.32
E.24
本题共1.5分
第6题
在C语言中,判断a等于0或b等于0或c等于0的正确的条件表达式是()
A.!
((a!
=0)||(b!
=0)||(c!
=0))
B.!
((a!
=0)&&(b!
=0)&&(c!
=0))
C.!
(a==0&&b==0)||(c!
=0)
D.(a=0)&&(b=0)&&(c=0)
E.!
((a=0)||(b=0)||(c=0))
本题共1.5分
第7题
地面上有标号为A、B、C的3根细柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下依次编号为1,2,3,……,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。
如果B柱上的操作记录为:
“进,进,出,进,进,出,出,进,进,出,进,出,出”。
那么,在C柱上,从下到上的盘子的编号为()。
A.243657
B.241257
C.243176
D.243675
E.214375
本题共1.5分
第8题
与十进制数17.5625对应的8进制数是()。
A.21.5625
B.21.44
C.21.73
D.21.731
E.前4个答案都不对
本题共1.5分
第9题
欧拉图G是指可以构成一个闭回路的图,且图G的每一条边恰好在这个闭回路上出现一次(即一笔画成)。
在以下各个描述中,不一定是欧拉图的是()。
A.图G中没有度为奇数的顶点
B.包含欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径)
C.包含欧拉闭迹的图(欧拉迹是指通过图中每边恰好一次的路径)
D.存在一条回路,通过每个顶点恰好一次
E.本身为闭迹的图
本题共1.5分
第10题
一个无法靠自身的控制终止的循环称为“死循环”,例如,在C语言程序中,语句while
(1)printf("*");就是一个死循环,运行时它将无休止地打印*号。
下面关于死循环的说法中,只有()是正确的。
A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检验
B.有些编译系统可以检测出死循环
C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环
D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也是可以检测的
E.对于死循环,只能等到发生时做现场处理,没有什么更积极的手段
本题共1.5分
第11题11-20题为多选题,少选得一半分,选错不得分
设A=B=true,C=D=false,以下逻辑运算表达式值为真的有()。
A.(¬A∧B)∨(C∧D∨A)
B.¬(((A∧B)∨C)∧D)
C.A∧(B∨C∨D)∨D
D.(A∧(D∨C))∧B
本题共1.5分
第12题
命题“P→Q”可读做P蕴涵Q,其中P、Q是两个独立的命题。
只有当命题P成立而命题Q不成立时,命题“P→Q”的值为false,其他情况均为true。
与命题“P→Q”等价的逻辑关系式是()。
A.¬P∨Q
B.P∧Q
C.¬(P∨Q)
D.¬(¬Q∧P)
本题共1.5分
第13题
(2070)_{16}+(34)_8(2070)
16
+(34)
8
的结果是()。
A.(8332)_{10}(8332)
10
B.(208C)_{16}(208C)
16
C.(100000000110)_2(100000000110)
2
D.(20214)_8(20214)
8
本题共1.5分
第14题
已知7个结点的二叉树的先根遍历是1245637(数字为结点的编号,以下同),后根遍历是4652731,则该二叉树的可能的中根遍历是()
A.4265173
B.4256137
C.4231547
D.4256173
本题共1.5分
第15题
冗余数据是指可以由其他数据导出的数据,例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。
冗余数据往往会造成数据的不一致,例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。
下面关于冗余数据的说法中,正确的是()。
A.应该在数据库中消除一切冗余数据
B.与用高级语言编写的数据处理系统相比,用关系数据库编写的系统更容易消除冗余数据
C.为了提高查询效率,在数据库中可以适当保留一些冗余数据,但更新时要做相容性检验
D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据
本题共
展开阅读全文
相关搜索