CSP-J-2006真题

题目总数:38
总分数:100
时间:不限时
第 1 题    单选题

在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是 ( )。

A.

沃尔夫奖

B.

诺贝尔奖

C.

菲尔兹奖

D.

图灵奖

第 2 题    单选题

在下列各软件中,不属于 NOIP 竞赛(复赛)推荐使用的语言环境有( )。

A.

gcc/g++

B.

Turbo Pascal

C.

RHIDE

D.

free pascal

第 3 题    单选题

以下断电之后仍能保存数据的有( )。

A.

寄存器

B.

ROM

C.

RAM

D.

高速缓存

第 4 题    单选题

Linux 是一种( )。

A.

绘图软件

B.

程序设计语言

C.

操作系统

D.

网络浏览器

第 5 题    单选题

CPU 是( )的简称。

A.

硬盘

B.

中央处理器

C.

高级程序语言

D.

核心寄存器

第 6 题    单选题

在计算机中,防火墙的作用是( )。

A.

防止火灾蔓延

B.

防止网络攻击

C.

防止计算机死机

D.

防止使用者误删除数据

第 7 题    单选题

在下列关于计算机语言的说法中,不正确的是( )。

A.

Pascal 和 C 都是编译执行的高级语言

B.

高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上

C.

C++是历史上的第一个支持面向对象的计算机语言

D.

与汇编语言相比,高级语言程序更容易阅读

第 8 题    单选题

在下列关于计算机算法的说法中,不正确的是( )。

A.

一个正确的算法至少要有一个输入

B.

算法的改进,在很大程度上推动了计算机科学与技术的进步

C.

判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性

D.

目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法

第 9 题    单选题

在下列各种排序算法中,不是以“比较”作为主要操作的算法是( )。

A.

选择排序

B.

冒泡排序

C.

插入排序

D.

基数排序

第 10 题    单选题

在编程时(使用任一种高级语言,不一定是 C++),如果需要从磁盘文件中输入一个很大的二维数 组(例如 1000*1000 的 double 型数组),按行读(即外层循环是关于行的)与按列读(即外层循 环 是关于列的)相比,在输入效率上( )。

A.

没有区别

B.

按行读的方式要高一些

C.

按列读的方式要高一些

D.

取决于数组的存储方式

第 11 题    单选题

在 C++ 中,表达式 21^2 的值是( )

A.

441

B.

42

C.

23

D.

24

第 12 题    单选题

在 C++ 中,判断 a 不等于 0 且 b 不等于 0 的正确的条件表达式是( )

A.

!a==0 || !b==0

B.

!((a==0)&&(b==0))

C.

!(a==0&&b==0)

D.

a && b

第 13 题    单选题

某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从 这 一时刻开始的出入记录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的 顺 序为 1,2,3,……,则车辆出站的顺序为( )。

A.

1, 2, 3, 4, 5

B.

1, 2, 4, 5, 7

C.

1, 4, 3, 7, 6

D.

1, 4, 3, 7, 2

第 14 题    单选题

高度为 n 的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为 n-1 的满二叉树。 在这里,树高等于叶结点的最大深度,根结点的深度为 0,如果某个均衡的二叉树共有 2381 个结点, 则该树的树高为( )。

A.

10

B.

11

C.

12

D.

13

第 15 题    单选题

与十进制数 1770 对应的八进制数是( )。

A.

3350

B.

3351

C.

3352

D.

3540

第 16 题    单选题

将 5 个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小 到大的排序。

A.

6

B.

7

C.

8

D.

9

第 17 题    单选题

设 A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。

A.

(¬ A∧B)∨(C∧D)

B.

¬ ((A∨B∨D)∧C)

C.

¬ A∧(B∨C∨D)

D.

(A∧B∧C)∨¬ D

第 18 题    单选题

(2010)16 + (32)8 的结果是( )。

A.

(8234)10

B.

(202B)16

C.

(20056)8

D.

(100000000110)2

第 19 题    单选题

设栈 S 的初始状态为空,元素 a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有 ( )。

A.

a, b, c, e, d

B.

b, c, a, e, d

C.

a, e, c, b, d

D.

d, c, e, b, a

第 20 题    单选题

已知 6 个结点的二叉树的先根遍历是 1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历 是 3 2 5 6 4 1,则该二叉树的可能的中根遍历是( )

A.

3 2 1 4 6 5

B.

3 2 1 5 4 6

C.

2 1 3 5 4 6

D.

2 3 1 4 6 5

第 21-22 题    多题目

(寻找假币) 现有 80 枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使 用 不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第 1 次的称重方法。请写出你的 结果:_________________________________________________。

第 1 题 问答

有几次

第 2 题 问答

你的结果

第 23-24 题    多题目

(取石子游戏) 现有 5 堆石子,石子数依次为 3,5,7,19,50,甲乙两人轮流从任一堆中任取 (每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无 论 乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果: _________________________________________________。

第 1 题 问答

有无获胜策略

第 2 题 问答

你的结果

第 25 题    问答题

阅读程序写结果

 #include <iostream.h>
void main()
{int i,u[4],a,b,x,y=10;
for(i=0;i<=3;i++)
cin >>u[i];
a=(u[0]+u[1]+u[2]+u[3])/7;
b=u[0]/((u[1]-u[2])/u[3]);
x=(u[0]+a+2)-u[(u[3]+3)%4];
if(x>10)
y+= (b*100-u[3])/(u[u[0]%3]*5);
else
y+=20+(b*100-u[3])/(u[u[0]%3]*5);
cout <<x<<","<<y<<endl;
} // 注:本例中,给定的输入数据可以避免分母为 0 或下标越界。

输入:9 3 9 4

输出:_______________


第 26 题    问答题
阅读程序写结果
#include <iostream.h> 
void main() 
{int i,j,m[]={2,3,5,7,13}; 
long t; 
for (i=0;i<=4;i++) 
 {t=1; 
 for(j=1;j<m[i];j++) t*=2; 
 cout <<(t*2-1)*t<<" "; 
 } 
cout <<endl; 
}

输出:____________________(阅读程序写结果)


第 27 题    问答题
阅读程序写结果
#include "iostream.h"  
#define N 7  
int fun(char s[],char a,int n)  
 {int j;  
 j=n;  
 while(a<s[j] && j>0) j--;  
 return j;  
 }  
void main()  
 {char s[N+1];  
 int k;  
 for(k=1;k<=N;k++)  
 s[k]='A'+2*k+1;  
 cout <<fun(s,'M',N)<<endl;  
 }  
输出:
_____________


第 28 题    问答题
阅读程序写结果
#include <iostream.h>  
 4
#include <iomanip.h>  
void digit(long n,long m)  
 {if(m>0)  
 cout <<setw(2)<<n%10;  
 if(m>1)  
 digit(n/10,m/10);  
 cout <<setw(2)<<n%10;  
 }  
void main()  
 {long x,x2;  
 cout <<"Input a number:"<<endl;  
 cin >>x;  
 x2=1;  
 while(x2<x) x2*=10;  
 x2/=10;  
 digit(x,x2);  
 cout <<endl;  
 }  
输入:
9734526  
输出:
______________________________


第 29-33 题    多题目

完善程序

(全排列)下面程序的功能是利用递归方法生成从 1 n(n<10)n 个数的全部可能的排列(不一 定按升序输出)。例如,输入 3,则应该输出(每行输出 5 个排列): 123 132 213 231 321  312  程序:

 
#include <iostream.h>  
#include <iomanip.h>  
int n,a[10]; // a[1],a[2],
…
,a[n]
构成 
n 
个数的一个排列
 
long count=0; // 
变量 
count 
记录不同排列的个数,这里用于控制换行 
void perm(int k)  
{int j,p,t;  
if(
 
①
 
)  
 {count++;  
 for(p=1;p<=n;p++)  
 cout <<setw(1)<<a[p
            

第 1 题 填空

第 2 题 填空

第 3 题 填空

第 4 题 填空

第 5 题 填空

第 34-38 题    多题目

由键盘输入一个奇数 P (P<100,000,000),其个位数字不是 5,求一个整数 S,使 P×S =  1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果:  1S 的全部数字。除最后一行外,每行输出 50 位数字。 (2

第 1 题 填空

第 2 题 填空

第 3 题 填空

第 4 题 填空

第 5 题 填空