试卷 NOIP 2012 提高组初赛试题
NOIP 2012 提高组初赛试题
单项选择题
第 1 题    单选题

目前计算机芯片(集成电路)制造的主要原料是( ),它是一种可以在沙子中提炼出的物质。

A.

B.

C.

D.

第 2 题    单选题

( )是主要用于显示网页服务器或者文件系统的 HTML 文件内容,并让用户与这些文件交互的一种软件。

A.

资源管理器

B.

浏览器

C.

电子邮件

D.

编译器

第 3 题    单选题

目前个人电脑的(  )市场占有率最靠前的厂商包括 Intel、AMD 等公司。

A.

显示器

B.

CPU

C.

内存

D.

鼠标

第 4 题    单选题

无论是 TCP/IP 模型还是 OSI 模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。如果用现实生活中的例子来比喻这些“层”,以下最恰当的是( )。

A.

中国公司的经理与缅甸公司的经理交互商业文件

B.

军队发布命令

C.

国际会议中,每个人都与他国地位对等的人直接进行会谈

D.

体育比赛中,每一级比赛的优胜者晋级上一级比赛

第 5 题    单选题

如果不在快速排序中引入随机化,有可能导致的后果是( )。

A.

数组访问越界

B.

陷入死循环

C.

排序结果错误

D.

排序时间退化为平方级

第 6 题    单选题

1946 年诞生于美国宾夕法尼亚大学的 ENIAC 属于()计算机。

A.

电子管

B.

晶体管

C.

集成电路

D.

超大规模集成电路

第 7 题    单选题

在程序运行过程中,如果递归调用的层数过多,会因为(  )引发错误。

A.

系统分配的栈空间溢出

B.

系统分配的堆空间溢出

C.

系统分配的队列空间溢出

D.

系统分配的链表空间溢出

第 8 题    单选题

8.地址总线的位数决定了 CPU 可直接寻址的内存空间大小,例如地址总线为 16 位,其最大的可寻址空间为 64KB。如果地址总线是 32 位,则理论上最大可寻址的内存空间为( )。

A.

128KB

B.

1MB

C.

1GB

D.

4GB

第 9 题    单选题

以下不属于目前 3G(第三代移动通信技术)标准的是()。

A.

GSM

B.

TD-SCDMA

C.

CDMA2000

D.

WCDMA

第 10 题    单选题

仿生学的问世开辟了独特的科学技术发展道路。人们研究生物体的结构、功能和工作原理,并将这些原理移植于新兴的工程技术之中。以下关于仿生学的叙述,错误的是( )。

A.

由研究蝙蝠,发明雷达

B.

由研究蜘蛛网,发明因特网

C.

由研究海豚,发明声纳

D.

由研究电鱼,发明伏特电池

不定项选择题
第 11 题    单选题

如果对于所有规模为 n 的输入,一个算法均恰好进行( )次运算,我们可以说该算法的时间复杂度为 O(2 n )。

A.

2 n+1

B.

3 n

C.

n×2 n

D.

2 2n

第 12 题    多选题

从顶点 A0出发,对有向图( )进行广度优先搜索(BFS)时,一种可能的遍历顺序是 ,A1,A2,A3,A4

A.

B.

C.

D.

第 13 题    多选题

如果一个栈初始时为空,且当前栈中的元素从栈底到栈顶依次为 a,b,c(如下图所示),另有元素 d 已经出栈,则可能的入栈顺序有( )。

A.

a,b,c,d

B.

b,a,c,d

C.

a,c,b,d

D.

d,a,b,c

第 14 题    多选题

在计算机显示器所使用的 RGB 颜色模型中,()属于三原色之一。

A.

黄色

B.

蓝色

C.

紫色

D.

绿色

第 15 题    多选题

一棵二叉树一共有 19 个节点,其叶子节点可能有( )个。

A.

1

B.

9

C.

10

D.

11

第 16 题    多选题

已知带权有向图 G 上的所有权值均为正整数,记顶点 u 到顶点 v 的最短路径的权值为 d(u,v)。若 𝑣1,𝑣2,𝑣3,𝑣4,𝑣5

是图 G 上的顶点,且它们之间两两都存在路径可达,则以下说法正确的有( )。

A.

v1到 v2的最短路径可能包含一个环

B.

𝑑(𝑣1,𝑣2)=𝑑(𝑣2,𝑣1)

C.

𝑑(𝑣1,𝑣3)≤𝑑(𝑣1,𝑣2)+𝑑(𝑣2,𝑣3)

D.

如果 𝑣1→𝑣2→𝑣3→𝑣4→𝑣5是𝑣1到 𝑣5的一条最短路径,那么 𝑣2→𝑣3→𝑣4是 v2到 v4的一条最短路径

第 17 题    多选题

逻辑异或(⊕)是一种二元运算,其真值表如下所示。以下关于逻辑异或的性质,正确的有( )。

A.

交换律:a⊕b=b⊕a

B.

结合律:(a⊕b)⊕c=a⊕(b⊕c)

C.

关于逻辑与的分配律:a⊕(b∧c)=(a⊕b)∧(a⊕c)

D.

关于逻辑或的分配律:a⊕(b∨c)=(a⊕b)∨(a⊕c)

第 18 题    单选题

十进制下的无限循环小数(不包括循环节内的数字均为 0 或均为 9 的平凡情况),在二进制下有可能是( )。

A.

无限循环小数(不包括循环节内的数字均为 0 或均为 1 的平凡情况)

B.

无限不循环小数

C.

有限小数

D.

整数

第 19 题    多选题

以下( )属于互联网上的 E-mail 服务协议。

A.

HTTP

B.

FTP

C.

POP3

D.

SMTP

第 20 题    多选题

以下关于计算复杂度的说法中,正确的有( )。

A.

如果一个问题不存在多项式时间的算法,那它一定是 NP 类问题

B.

如果一个问题不存在多项式时间的算法,那它一定不是 P 类问题

C.

如果一个问题不存在多项式空间的算法,那它一定是 NP 类问题

D.

如果一个问题不存在多项式空间的算法,那它一定不是 P 类问题

问题求解
第 21 题    填空题

21题

第 22 题    填空题

对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 

5 个不同的独立集(1 个双点集合、3 个单点集合、1 个空集),图 2 有 14 个不同的独立集。那么,图 3 有_________个不同的独立集。

阅读程序写结果
第 23 题    填空题
#include <iostream>
using namespace std;
int n, i, temp, sum, a[100];
int main() {
    cin >> n;
    for (i = 1; i <= n; i++)
        cin >> a[i];
    for (i = 1; i <= n - 1; i++)
        if (a[i] > a[i + 1]) {
            temp = a[i];
            a[i] = a[i + 1];
            a[i + 1] = temp;
        }
    for (i = n; i >= 2; i--)
        if (a[i] < a[i - 1]) {
            temp = a[i];
            a[i] = a[i - 1];
            a[i - 1] = temp;
        }
    sum = 0;
    for (i = 2; i <= n - 1; i++)
        sum +  = a[i];
    cout << sum / (n - 2) << endl;
    return 0;
}

输入:

8

40 70 50 70 20 40 10 30

输出:_______

第 24 题    填空题
#include <iostream>
using namespace std;
int n, i, ans;
int gcd(int a, int b)
{
    if (a % b == 0) return b;
    else
        return gcd(b, a%b);
}
int main()
{
    cin>>n;
    ans = 0;
    for (i = 1; i <= n; i++)
        if (gcd(n,i) == i)
            ans++;
    cout<<ans<<endl;
}

输入:120

输出:________

第 25-26 题    组合题
#include <iostream>
using namespace std;
const int SIZE = 20;
int data[SIZE];
int n, i, h, ans;
void merge()
{
    data[h-1] = data[h-1] + data[h];
    h--;
    ans++;
}
int main()
{
    cin>>n;
    h = 1;
    data[h] = 1;
    ans = 0;
    for (i = 2; i <= n; i++)
    {
        h++;
        data[h] = 1;
        while (h > 1 && data[h] == data[h-1])
            merge();
    }
    cout<<ans<<endl;
}

(1)

输入:8

输出:_________

(2)

输入:2012

输出:_________

第 25 题 填空
第 26 题 填空
第 27 题    填空题

输入:

ABCDEF

BCAEDF

输出:__________

完善程序
第 28-32 题    组合题

(排列数)输入两个正整数 n,m(1≤n≤20,1≤m≤n),在 1∼n 中任取 m 个数,按字典序从小到大输出所有这样的排列。例如:

输入:3 2

输出:1 2 1 3 2 1 2 3 3 1 3 2

#include <iostream>
#include <cstring>
using namespace std;
const intSIZE = 25;
boolused[SIZE];
intdata[SIZE];
intn, m, i, j, k;
boolflag;
int main() {
	cin >> n >> m;
	memset( used, false, sizeof(used) );
	for ( i = 1; i <= m; i++ ) {
		data[i] = i;
		used[i] = true;
	}
	flag = true;
	while ( flag ) {
		for ( i = 1; i <= m - 1; i++ )
			cout << data[i] << " ";
		cout << data[m] << endl;
		flag = ①;
		for ( i = m; i >= 1; i-- ) {
			②;
			for ( j = data[i] + 1; j <= n; j++ )
				if ( !used[j] ) {
					used[j] = true;
					data[i] = ③;
					flag= true;
					break;
				}
			if ( flag ) {
				for ( k = i + 1; k <= m; k++ )
					for ( j = 1; j <= ④; j++ )
						if ( !used[j] ) {
							data[k] = j;
							used[j] = true;
							break;
						}
				⑤;
			}
		}
	}
}
第 28 题 填空
第 29 题 填空
第 30 题 填空
第 31 题 填空
第 32 题 填空
第 33-38 题    组合题

(新壳栈)小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c>2 是一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹出还是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新壳栈”吗?程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不足 c 个,应当输出相应的错误信息。

第 33 题 填空
第 34 题 填空
第 35 题 填空
第 36 题 填空
第 37 题 填空
第 38 题 填空
答题卡
单项选择题
1 2 3 4 5 6 7 8 9 10
不定项选择题
问题求解
21 22
阅读程序写结果
完善程序
题目总数:28
总分数:100
时间:120分钟
QQ
微信