前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【真题】暑假备战CSP-J/S:NOIP2012提高组初赛(第一轮)试题及参考答案(PDF版、无水印可直接打印)

【真题】暑假备战CSP-J/S:NOIP2012提高组初赛(第一轮)试题及参考答案(PDF版、无水印可直接打印)

作者头像
小码匠
发布2023-08-31 15:05:03
发布2023-08-31 15:05:03
41100
代码可运行
举报
运行总次数:0
代码可运行

资料下载

公众号内回复【NOIP2012S】即可获取下载链接,直接打印电子版让孩子做即可,文件包含

  • 试题真题
  • 参考答案

第 1 题

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

  • A. 硅
  • B. 铜
  • C. 锗
  • D. 铝

本题共 1.5

第 2 题

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

  • A. 资源管理器
  • B. 浏览器
  • C. 电子邮件
  • D. 编译器

本题共 1.5

第 3 题

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

  • A. 显示器
  • B. CPU
  • C. 内存
  • D. 鼠标

本题共 1.5

第 4 题

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

  • A. 中国公司的经理与缅甸公司的经理交互商业文件 img
  • B. 军队发布命令 img
  • C. 国际会议中,每个人都与他国地位对等的人直接进行会谈

img

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

img

本题共 1.5

第 5 题

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

  • A. 数组访问越界
  • B. 陷入死循环
  • C. 排序结果错误
  • D. 排序时间退化为平方级

本题共 1.5

第 6 题

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

  • A. 电子管
  • B. 晶体管
  • C. 集成电路
  • D. 超大规模集成电路

本题共 1.5

第 7 题

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

  • A. 系统分配的栈空间溢出
  • B. 系统分配的堆空间溢出
  • C. 系统分配的队列空间溢出
  • D. 系统分配的链表空间溢出

本题共 1.5

第 8 题

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

  • A. 128KB
  • B. 1MB
  • C. 1GB
  • D. 4GB

本题共 1.5

第 9 题

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

  • A. GSM
  • B. TD-SCDMA
  • C. CDMA2000
  • D. WCDMA

本题共 1.5

第 10 题

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

  • A. 由研究蝙蝠,发明雷达
  • B. 由研究蜘蛛网,发明因特网
  • C. 由研究海豚,发明声纳
  • D. 由研究电鱼,发明伏特电池

本题共 1.5

第 11 题

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

  • A. 2n+1
  • B. 3n
  • C. n*2n
  • D. 22n

本题共 1.5

第 12 题

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

A_0,A_1,A_2,A_3,A_4

  • A.
  • B.
  • C.
  • D.

本题共 1.5

第 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

本题共 1.5

第 14 题

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

  • A. 黄色
  • B. 蓝色
  • C. 紫色
  • D. 绿色

本题共 1.5

第 15 题

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

  • A. 1
  • B. 9
  • C. 10
  • D. 11

本题共 1.5

第 16 题

6.已知带权有向图 G 上的所有权值均为正整数,记顶点 u 到顶点 v 的最短路径的权值为 d(u, v)。若 v1, v2, v3, v4, v5 是图 G 上的顶点,且它们之间两两都存在路径可达,则以下说法正确的有( )。

  • A. v1到v2的最短路径可能包含一个环
  • B. d(v1,v2)=d(v2,v1)
  • C. d(v1,v3)≤d(v1,v2)+d(v2,v3)
  • D. 如果v1→v2→v3→v4→v5是v1到v5的一条最短路径,那么v2→v3→v4是v2到v4的一条最短路径

本题共 1.5

第 17 题

7.逻辑异或(⊕)是一种二元运算,其真值表如下所示。

以下关于逻辑异或的性质,正确的有( )。

  • 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)

本题共 1.5

第 18 题

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

  • A. 无限循环小数(不包括循环节内的数字均为 0 或均为 1 的平凡情况)
  • B. 无限不循环小数
  • C. 有限小数
  • D. 整数

本题共 1.5

第 19 题

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

  • A. HTTP
  • B. FTP
  • C. POP3
  • D. SMTP

本题共 1.5

第 20 题

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

  • A. 如果一个问题不存在多项式时间的算法,那它一定是 NP 类问题
  • B. 如果一个问题不存在多项式时间的算法,那它一定不是 P 类问题
  • C. 如果一个问题不存在多项式空间的算法,那它一定是 NP 类问题
  • D. 如果一个问题不存在多项式空间的算法,那它一定不是 P 类问题

本题共 1.5

第 21 题

1.本题中,我们约定布尔表达式只能包含 p, q, r 三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(¬)三种布尔运算。如果无论 p, q, r 如何取值,两个布尔表达式的值总是相同,则称它们等价。例如,(p∨q)∨r 和 p∨(q∨r)等价,p∨¬p 和 q∨¬q 也等价;而 p∨q 和 p∧q 不等价。那么,两两不等价的布尔表达式最多有_________个。

答案:

本题共 5

第 22 题

2.对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 5 个不同的独立集(1 个双点集合、3 个单点集合、1 个空集),图 2 有 14 个不同的独立集。那么,图 3 有_________个不同的独立集。

答案:

本题共 5

第 23 题

代码语言:javascript
代码运行次数:0
运行
复制
#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 输出:_______

答案:

本题共 8

第 24 题

代码语言:javascript
代码运行次数:0
运行
复制
#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 输出:________

答案:

本题共 8

第 25 题

代码语言:javascript
代码运行次数:0
运行
复制
#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 输出:_________

本题共 8

第 26 题

代码语言:javascript
代码运行次数:0
运行
复制
#include <iostream>
#include <string>
using namespace std;
int lefts[20], rights[20], father[20];
string s1, s2, s3;
int n, ans;
void calc(int x, int dep)
{
    ans = ans + dep*(s1[x] - 'A' + 1);
    if (lefts[x] >= 0) calc(lefts[x], dep+1);
    if (rights[x] >= 0) calc(rights[x], dep+1);
}
void check(int x)
{
    if (lefts[x] >= 0) check(lefts[x]);
    s3 = s3 + s1[x];
    if (rights[x] >= 0) check(rights[x]);
}
void dfs(int x, int th)
{
    if (th == n)
    {
        s3 = "";
        check(0);
        if (s3 == s2)
        {
            ans = 0;
            calc(0, 1);
            cout<<ans<<endl;
        }
        return;
    }
    if (lefts[x] == -1 && rights[x] == -1)
    {
        lefts[x] = th;
        father[th] = x;
        dfs(th, th+1);
        father[th] = -1;
        lefts[x] = -1;
    }
    if (rights[x] == -1)
    {
        rights[x] = th;
        father[th] = x;
        dfs(th, th+1);
        father[th] = -1;
        rights[x] = -1;
    }
    if (father[x] >= 0)
        dfs(father[x], th);
}
int main()
{
    cin>>s1;
    cin>>s2;
    n = s1.size();
    memset(lefts, -1, sizeof(lefts));
    memset(rights, -1, sizeof(rights));
    memset(father, -1, sizeof(father));
    dfs(0, 1);
}

输入:ABCDEF BCAEDF 输出:__________

答案:

本题共 8

第 27 题

1.(排列数)输入两个正整数 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

代码语言:javascript
代码运行次数:0
运行
复制
#include <iostream>
#include <cstring>
using namespace std;
const int	SIZE = 25;
bool		used[SIZE];
int		data[SIZE];
int		n, m, i, j, k;
bool		flag;
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;
						}
				⑤;
			}
		}
	}
}
  • ①答案:
  • ②答案:
  • ③答案:
  • ④答案:
  • ⑤答案:

本题共 15

第 28 题

2.(新壳栈)小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c > 2 是一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹出还是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新壳栈”吗?

程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不足 c 个,应当输出相应的错误信息。

代码语言:javascript
代码运行次数:0
运行
复制
#include < iostream > 
using namespace std; 
const int
NSIZE = 100000, 
CSIZE = 1000; 
int n, c, r, tail, head, s[NSIZE], q[CSIZE]; 
//数组 s 模拟一个栈,n 为栈的元素个数
//数组 q 模拟一个循环队列,tail 为队尾的下标,head 为队头的下标 
bool direction, empty; 
int previous(int k) {
	if (direction)
		return ((k + c - 2) % c) + 1; 
	else
		return (k % c) + 1; 
}
int next(int k) {
	if (direction)
		①; 
	else
		return ((k + c - 2) % c) + 1; 
}
void push() {
	int element; 
	cin >> element; 
	if (next(head) == tail) {
		n++; 
		②; 
		tail = next(tail); 
	}
	if (empty)
		empty = false; 
	else
		head = next(head); 
	③ = element; 
}
void pop() {
	if (empty) {
		cout << "Error: the stack is empty!" << endl; return; 
	}
	cout << 	④ << endl; 
	if (tail == head)
		empty = true; 
	else {
		head = previous(head); 
	if (n > 0) {
		tail = previous(tail); 
		⑤ = s[n]; 
		n--; 
	}
}
}
void reverse() {
	int temp; 
	if (	⑥ == tail) {
		direction =  ! direction; 
		temp = head; 
		head = tail; 
		tail = temp; 
	}
	else
		cout << "Error: less than " << c << " elements in the stack!" << endl; 
}
int main() {
	cin >> c; 
	n = 0; 
	tail = 1; 
	head = 1; 
	empty = true; 
	direction = true; 
	do {
		cin >> r; 
		switch (r) {
			case 1:push(); break; 
			case 2:pop(); break; 
			case 3:reverse(); break; 
		}
	}while (r != 0); 
	return 0; 
}
  • ①答案:
  • ②答案:
  • ③答案:
  • ④答案:
  • ⑤答案:
  • ⑥答案:

本题共 12

提高组历年真题分享

关于暑假备战几点建议

tips

关于分享

小码匠今年也要参赛,近期我正在整理CSP-J&S的知识点精简版,后面会陆续在本公众号内分享。

期待能与更多宝爸宝妈有更深度、更广度的交流,一起探讨信息学学习,让大家少走弯路。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
    • 第 1 题
    • 第 2 题
    • 第 3 题
    • 第 4 题
    • 第 5 题
    • 第 6 题
    • 第 7 题
    • 第 8 题
    • 第 9 题
    • 第 10 题
    • 第 11 题
    • 第 12 题
    • 第 13 题
    • 第 14 题
    • 第 15 题
    • 第 16 题
    • 第 17 题
    • 第 18 题
    • 第 19 题
    • 第 20 题
    • 第 21 题
    • 第 22 题
    • 第 23 题
    • 第 24 题
    • 第 25 题
    • 第 26 题
    • 第 27 题
    • 第 28 题
  • 提高组历年真题分享
  • 关于暑假备战几点建议
    • 关于分享
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档