NOIP 2008 普及组初赛试题

第 1 题

微型计算机中,控制器的基本功能是( )。

A. 控制机器各个部件协调工作 B. 实现算术运算和逻辑运算 C. 获取外部信息 D. 存放程序和数据

正确答案: A

电子控制器是一种重要的电子产品元件,在电子生产中有着广泛的应用,在人们日常生活中发挥着非常重要的作用。电子控制器(ECU)是一个微缩了的计算机管理中心,它以信号(数据)采集、计算处理、分析判断、决定对策作为输入,然后以发出控制指令、指挥执行器工作作为输出有时,它还要给传感器提供稳定电源或是参考电压。其全部功能是通过各种硬件和软件的总和来完成的,其核心是以单片机为主体的微型计算机系统。

第 2 题

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

A. (A∧B)∨(C∧D∨ -A) B. ((A∧B)∨C)∧ -D C. (B∨C∨D)∧D∧A D. A∧(D∨ C)∧B

正确答案: B

基本的操作符有:非(¬)、与(∧)、或(∨)、条件(→)以及“双条件”(↔)。“非”是一个一元操作符,它只操作一项(¬ P)。剩下的是二元操作符,操作两项来组成复杂语句(P ∧ Q, P ∨ Q, P → Q, P ↔ Q)。

注意,符号“与”(∧)和交集(∩),“或”(∨)和并集(∪)的相似性。这不是巧合:交集的定义使用“与”,并集的定义是用“或”。

a∧b=false false∨c=ture ture∧¬d=ture

第 3 题

在下列关于图灵奖的说法中,不正确的是( )。

A. 图灵奖是美国计算机协会于 1966 年设立的,专门奖励那些对计算机事业作出重要贡献的个人 B. 图灵奖有“计算机界诺贝尔奖”之称 C. 迄今为止,还没有华裔计算机科学家获此殊荣 D. 图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵

正确答案: C

2000年,对计算理论包括伪随机数生成、密码学与通信复杂度的突出贡献使姚教授荣膺图灵奖(A.M. Turing Award),成为图灵奖创立以来首位获奖的亚裔学者,也是迄今为止获此殊荣的唯一华裔计算机科学家。

第 4 题

计算机在工作过程中,若突然停电,( )中的信息不会丢失。

A. ROM 和 RAM B. CPU C. ROM D. RAM

正确答案: C

RAM 内存断电后数据丢失

ROM 断电后数据任然能保存

第 5 题
完全二叉树共有 2N −1 个结点,则它的叶节点数是( )。
A. N − 1 N−1 N1 B. N N N C. 2 N 2N 2N D. 2 N − 1 2^N−1 2N1

正确答案: B

因为是完全二叉树,所以度为1的结点只可能是0个或1个(因为完全二叉树的定义是只有最下面的两层结点小于2,)。
因为(性质3):对于任何一棵二叉树,如果其叶结点数为N0(N0表示度为0的点也就是叶子结点),而度为2的结点为N2,则N0=N2+1,
假设度为0的点数量为x,则度为2的点数量为x-1,
当度为1的点有1个时,则 x+x-1+1 = 2N-1,解得x=N- 1/2 (因为结点必须为整数,所以答案错误)
当度为1的点有0个时,则 x+x-1+0 = 2N-1,解得 x= N;(符合题意)

第 6 题

在以下各项中,( )不是操作系统软件。

A. Solaris B. Linux C. Windows Vista D. Sybase

正确答案: D

Sybase是数据库

第 7 题

设栈 S 的初始状态为空,元素 a,b,c,d,e 依次入栈 S,出栈的序列为 b,d,f,e,c,a,则栈 S 的容量至少应该是( )。

A. 6 B. 5 C. 4 D. 3

正确答案: C

在这里插入图片描述

第 8 题

与十进制数 28.562528.5625 相等的四进制数是( )。

A. 123.21 B. 131.22 C. 130.22 D. 130.21

在这里插入图片描述

第 9 题

设字符串 S=Olympic,S 的非空子串的数目是( )。

A. 28 B. 29 C. 16 D. 17

正确答案: A

非空字串、真字串:(1+n)*n/2 (7+1)*7/2=28

第 10 题

Web2.0 是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中,( )是典型的 Web2.0 应用。

A. Sina B. Flickr C. Yahoo D. Google

正确答案: B

第 11 题

递归过程或函数调用时,处理参数和返回地址,通常使用一种称为( )的数据结构。

A. 队列 B. 多维数组 C. 线性表 D. 栈

正确答案: D

当在一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需要先完成3个操作:① 将所有的实参、返回地址等信息传递给被调函数保存;
② 为被调函数的局部变量分配存储区;
③ 将控制转移到被调函数的入口。

从被调函数返回调用函数之前,系统还要完成3个操作:
① 即保存被调函数的计算结果;
② 释放被调函数的数据区;
③ 依照被调函数保存的地址将控制转移到调用函数。

当有多个函数构成嵌套调用时,按照"后调用先返回"的原则,上述函数之间的信息传递和控制转移必须通过"栈"来实现,每当调用一个函数时,就在栈顶为它分配一个存储区,每当退出一个函数时,就释放它的存储区,当前正在运行的函数的数据区必在栈顶。递归函数的运行过程类似于多个函数的嵌套调用,只是调用和被调用函数是同一个函数。

(2008)10+(5B)16 的结果是( )。

A. (833)16 B. (2089)10 C. (4163)8 D(100001100011)2

正确答案: A

第 13 题

二叉树 T ,已知其先根遍历是 1 2 4 3 5 7 61 2 4 3 5 7 6(数字为结点的编号,以下同),中根遍历是 2 4 1 5 7 3 62 4 1 5 7 3 6,则该二叉树的后根遍历是( )。

A. 4 2 5 7 6 3 14 2 5 7 6 3 1 B. 4 2 7 5 6 3 14 2 7 5 6 3 1 C. 7 4 2 5 6 3 17 4 2 5 6 3 1 D. 4 2 7 6 5 3 14 2 7 6 5 3 1

在这里插入图片描述

第 14 题

将数组 {8,23,4,16,77,−5,53,100} 中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( )次。

A. 4 B. 5 C. 6 D. 7

正确答案: B

模拟题,要细心

第 15 题

对有序数组 {5,13,19,21,37,56,64,75,88,92,100} 进行二分查找,成功查找元素 1919 的查找长度(比较次数)是( )。

A. 1 B. 2 C. 3 D. 4

正确答案: B

二分查找的方法要首先明白
56 需要查找1次
19、88 需要查找2次
5和13、21和37、64和75、92和100四组中,每组两个数中一个查找3次 一个查找4次,具体谁3谁4这要看具体实现的时候的等于符号怎么划分.
每个的概率相等,为1/11
所以,平均长度=1/11×(1+2×2+3×4+4×4)=33/11 答案C正确.

第 16 题

面向对象程序设计(Object-Oriented Programming)是一种程序设计的方法论,它将对象作为程序的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性和扩展性。下面关于面向对象程序设计的说法中,不正确的是( )。

A. 面向对象程序设计通常采用自顶向下设计方法进行设计。 B. 面向对象程序设计方法具有继承性(inheritance)、封装性(encapsulation)、多态性(polymorphism)等几大特点。 C. 支持面向对象特性的语言称为面向对象的编程语言,目前较为流行的有 C++、JAVA、C# 等。 D. 面向对象的程序设计的雏形来自于 Simula 语言,后来在 SmallTalk 语言的完善和标准化的过程中得到更多的扩展和对以前思想的重新注解。至今,SmallTalk 语言仍然被视为面向对象语言的基础。

正确答案: A

通常不是自顶向下

第 17 题

在 32×3232×32 点阵的“字库”中,汉字“北”与“京”的字模占用字节数之和是( )。

A. 512 B. 256 C. 384 D. 128

正确答案: B

32 × 32 ÷ 8 × 2 = 256 32\times32\div8\times2=256 32×32÷8×2=256

设 T 是一棵有 n 个顶点的树,下列说法不正确的是( )。

A. T 有 n 条边 B. T 是连通的 C. T 是无环的 D. T 有 n−1 条边

正确答案: A

T 有 n−1 条边

第 19 题

下列不属于 NOIP 竞赛推荐使用的语言环境的是( )。

编者注:由于试题为 20082008 年的试题,请根据 20082008 年的实际情况作答。

A. Dev-C++ B. Visual C++ C. free pascal D. Lazarus

正确答案: B

在 C++ 程序中,表达式 200|10 的值是( )。

A. 20 B. 1 C. 220 D. 202

正确答案: D

200|10=202

第 21 题

书架上有 44 本不同的书 A、B、C、D。其中 A 和 B 是红皮的,C 和 D 是黑皮的。把这 44 本书摆在书架上,满足所有黑皮的书都排在一起的摆法有_____种。满足 A 必须比 C 靠左,所有红皮的书要摆放在一起,所有黑皮的书要摆放在一起,共有______种摆法。

正确答案: 12

正确答案: 4

A 3 2 × A 2 2 = 12 A_3^2\times A_2^2=12 A32×A22=12

A 2 2 × A 2 2 A_2^2\times A_2^2 A22×A22

第 22 题

有 6 个城市,任何两个城市之间都有一条道路连接,6 个城市两两之间的距离如下表所示,则城市 1 到城市 6 的最短距离为_____________。 img

正确答案: 7

1 - 2 - 5 - 6

第 23 题

阅读程序写结果:

#include<iostream>
using namespace std;
int main()
{
	int i, a, b, c, d, f[4];
	for(i = 0; i < 4; i++) cin >> f[i];
	a = f[0] + f[1] + f[2] + f[3];
	a = a / f[0];
	b = f[0] + f[2] + f[3];
	b = b / a;
	c = (b * f[1] + a) / f[2];
	d = f[(b / c ) % 4];
	if(f[(a + b + c + d) % 4] > f[2])
		cout << a + b<< endl;
	else 
		cout << c + d << endl;
	return 0;
}输入:9 19 29 39

正确答案: 23

a=96

a=10

b=77

b=7

c=4

d=19

f[(a + b + c + d) % 4] > f[2]=false

4+19=23

第 24 题

阅读程序写结果:

#include<iostream>
using namespace std;
void foo(int a, int b, int c)
{
	if(a > b) 
		foo(c, a, b);
	else
		cout<<a<<','<<b<<','<<c<<endl;
}
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	foo(a, b, c);
	return 0;
}

输入: 3 1 2

正确答案: 2,3,1

第一次 if(a > b)=ture,传foo(2,3,1)

第二次 if(a > b)=false,输出2,3,1

第 25 题

阅读程序写结果:

#include <iostream>
using namespace std;

void func(int ary[], int n )
{
	int i=0, j, x;
	j=n-1;
	while(i<j)
	{
		while (i<j&&ary[i]>0) i++;
		while (i<j&&ary[j]<0) j--;
		if (i<j){
			x=ary[i];
			ary[i++]=ary[j];
			ary[j--]=x;
		}
	}
}

int main()
{
	
	int a[20], i, m;
	m=10;
	for(i=0; i<m; i++)
	{
		cin>>a[i];
	}
	func(a, m);
	for (i=0; i<m; i++)
		cout<<a[i]<<" ";
	cout<< endl;
	return 0;
}

输入:5 4 -6 -11 6 -59 22 -6 1 10

正确答案: 5 4 10 1 6 22 -59 -6 -11 -6

x=ary[i];ary[i++]=ary[j];ary[j--]=x; 是标准是 i, j 位交换

手动模拟即可

第 26 题

阅读程序写结果:

#include<iostream>
#include<cstring>
using namespace std;

#define MAX 100
void solve(char first[], int spos_f, int epos_f, char mid[], int spos_m, int epos_m)
{
	int i, root_m;
	if(spos_f > epos_f)
		return;
	for(i = spos_m; i <= epos_m; i++)
		if(first[spos_f] == mid[i])
		{
			root_m = i;
			break;
		}
	solve(first, spos_f + 1, spos_f + (root_m - spos_m), mid, spos_m, root_m - 1);
	solve(first, spos_f + (root_m - spos_m) + 1, epos_f, mid, root_m + 1, epos_m);
	cout << first[spos_f];
}

int main()
{
	char first[MAX], mid[MAX];
	int len;
	cin >> len;
	cin >> first >> mid;
	solve(first, 0, len - 1, mid , 0, len - 1);	
	cout << endl;
	return 0;
}

输入:
7
ABDCEGF
BDAGECF

正确答案: DBGEFCA

看函数里的变量名,应该是个根树有关的

char first[MAX], mid[MAX]; 可以看出分别是前序和中序,再结合函数,可以知道是前序中序求后序。

在这里插入图片描述

要是没学过肿么办:那就手动模拟

第 27 题

完善程序:
(字符串替换)给定一个字符串 SS 仅包含大小写字母),下面的程序将 S 中的每个字母用规定的字母替换,并输出 S 经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串 S*,第二个字符串 ′S′ 由 2626 个字母组成,它是 az 的任一排列,大小写不定,′S′ 规定了每个字母对应的替换字母:′S′ 中的第一个字母是字母 A 和 a 的替换字母,即 S 中的 AA 用该字母的大写替换,S 中的 aa 用该字母的小写替换;′S′ 中的第二个字母是字母 BB 和 bb 的替换字母,即 S 中的 BB 用该字母的大写替换,S* 中的 bb 用该字母的小写替换;……以此类推。

#include <iostream>
#include <string.h>
char change[26], str[5000];
using namespace std;

void CheckChangeRule()
{
    int i;
    for (i = 0;i < 26;i ++)
    {
        if ( [] )
               change[i] -= 'A' - 'a';
    }
}

void ChangeString()
{
    int i;
    for (i = 0;i <strlen(str);i ++)
    {
          if (  []  )
                str[i] = change[str[i] - 'A'] -'a' + 'A';
          else
                  []          
    }
}

int main()
{
		int i;
cin >> str ;
    cin >> change;
    CheckChangeRule();
    [] 
    cout << str << endl;
    return 0;
}

正确答案: change[i] >= ‘A’ && change[i] <= ‘Z’ / change[i] <= ‘Z’

正确答案: str[i] >= ‘A’ && str[i] <= ‘Z’ / str[i] <= ‘Z’

正确答案: str[i] = change[str[i] - ‘a’];

正确答案: ChangeString();

先看整个程序,发现没有调用 ChangeString 函数,所以空四就可以填出来了,即 ChangeString();

再看空一, change[i] -= 'A' - 'a'; 可以看出是大写转小写,所以要判断是否为大写,即 change[i] -= 'A' - 'a'; ,又因为题目中说 “S 仅包含大小写字母” ,则也可以写成 change[i] <= 'Z'

<< str << endl;
return 0;
}


1.

正确答案: change[i] >= 'A' && change[i] <= 'Z' / change[i] <= 'Z'

2.

正确答案: str[i] >= 'A' && str[i] <= 'Z' / str[i] <= 'Z'

3.

正确答案: str[i] = change[str[i] - 'a'];

4.

正确答案: ChangeString();

>   先看整个程序,发现没有调用 ChangeString 函数,所以空四就可以填出来了,即 `ChangeString();` 
>
>   再看空一, `change[i] -= 'A' - 'a';` 可以看出是大写转小写,所以要判断是否为大写,即 `change[i] -= 'A' - 'a';` ,又因为题目中说 “*S* 仅包含大小写字母” ,则也可以写成 `change[i] <= 'Z'`   
>
>   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值