求试题,17届NOIP(C语言)普及组初赛试题

如题了,我们监考员把试卷收走了,现在就只有答案,木有题

一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确选项。)
1.在二进制下,1101001 + ( ) = 1110110。
A. 1011 B. 1101 C. 1010 D. 1111
2.字符“0”的ASCII码为48,则字符“9”的ASCII码为( )。
A. 39 B. 57 C. 120 D. 视具体的计算机而定
3.一片容量为8GB的SD卡能存储大约( )张大小为2MB的数码照片。
A. 1600 B. 2000 C. 4000 D. 16000
4.摩尔定律(Moore's law)是由英特尔创始人之一戈登•摩尔(Gordon Moore)提出来的。根据摩尔定律,在过去几十年以及在可预测的未来几年,单块集成电路的集成度大约每( )个月翻一番。
A. 1 B. 6 C. 18 D. 36

5.无向完全图是图中每对顶点之间都恰有一条边的简单图。已知无向完全图G有7个顶点,则它共有( )条边。
A. 7 B. 21 C. 42 D. 49

6.寄存器是( )的重要组成部分。
A. 硬盘 B. 高速缓存 C. 内存 D. 中央处理器(CPU)

7.如果根结点的深度记为1,则一棵恰有2011个叶结点的二叉树的深度最少是( )。
A. 10 B. 11 C. 12 D. 13

8. 体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于( )算法 。
A. 快速排序 B. 插入排序 C. 冒泡排序 D. 归并排序

9.一个正整数在二进制下有100位,则它在十六进制下有( )位。
A. 7 B. 13 C. 25 D. 不能确定

10.有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。这种想法是( )。
A. 正确的,将文件放入回收站意味着彻底删除、无法恢复
B. 不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复
C. 不正确的,即使将回收站清空,文件只是被标记为删除,仍可能通过恢复软件找回
D. 不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除

11.广度优先搜索时,需要用到的数据结构是( )。
A. 链表 B. 队列 C. 栈 D. 散列表

12.在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指( )。
A. 程序运行时理论上所占的内存空间
B. 程序运行时理论上所占的数组空间
C. 程序运行时理论上所占的硬盘空间
D. 程序源文件理论上所占的硬盘空间

13.在含有n个元素的双向链表中查询是否存在关键字为k的元素,最坏情况下运行的时间复杂度是( )。
A. O(1) B. O(log n) C. O(n) D. O(n log n)

14.生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、虹膜识别、人脸识别等技术已广泛应用于政府、银行、安全防卫等领域。以下不属于生物特征识别技术及其应用的是( )。
A. 指静脉验证 B. 步态验证 C. ATM机密码验证 D. 声音验证

15.现有一段文言文,要通过二进制哈夫曼编码进行压缩。简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700、600、300、200。那么,“也”字的编码长度是( )。
A. 1 B. 2 C. 3 D. 4

16.关于汇编语言,下列说法错误的是( )。
A. 是一种与具体硬件相关的程序设计语言
B. 在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试
C. 可以直接访问寄存器、内存单元、以及I/O端口
D. 随着高级语言的诞生,如今已完全被淘汰,不再使用

17.( )是一种选优搜索法,按选优条件向前搜索,以达到目标。当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。
A. 回溯法 B. 枚举法 C. 动态规划 D. 贪心法

18.1956年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain),以表彰他们对半导体的研究和晶体管效应的发现。
A. 诺贝尔物理学奖
B. 约翰•冯•诺依曼奖
C. 图灵奖
D. 高德纳奖(Donald E. Knuth Prize)

19.对一个有向图而言,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。例如,右图就是一个强连通图。事实上,在删掉边( )后,它依然是强连通的。
A. a B. b C. c D. d

20.从ENIAC到当前最先进的计算机,冯•诺依曼体系结构始终占有重要的地位。冯•诺依曼体系结构的核心内容是( )。
A. 采用开关电路 B. 采用半导体器件
C. 采用存储程序和程序控制原理 D. 采用键盘输入

二、问题求解(共2题,每题5分,共计10分)

1.每份考卷都有一个8位二进制序列号。当且仅当一个序列号含有偶数个1时,它才是有效的。例如,00000000、01010011都是有效的序列号,而11111110不是。那么,有效的序列号共有________个。

2.定义字符串的基本操作为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。将字符串A变成字符串B的最少操作步数,称为字符串A到字符串B的编辑距离。字符串"ABCDEFG"到字符串"BADECG"的编辑距离为________。

三、阅读程序写结果(共4题,每题8分,共计32分)

1.
#include<stdio.h>
int main() {
int i, n, m, ans;

scanf("%d%d", &n, &m);
i = n;
ans = 0;
while (i <= m) {
ans += i;
i++;
}
printf("%d\n", ans);
return 0;
}
输入:10 20
输出:_________

2.
#include <stdio.h>
#include <string.h>
#define SIZE 20

int main()
{
char map[] = "22233344455566677778889999";
char tel[SIZE];
int i;

scanf("%s", tel);
for (i = 0; i < strlen(tel); i++)
if ((tel[i] >= '0') && (tel[i] <= '9'))
printf("%c", tel[i]);
else if ((tel[i] >= 'A') && (tel[i] <= 'Z'))
printf("%c", map[tel[i] - 'A']);
return 0;
}

输入:CCF-NOIP-2011
输出:_________

3.
#include <stdio.h>
#include <string.h>
#define SIZE 100

int main()
{
int n, i, sum, x, a[SIZE];

scanf("%d", &n);
memset(a, 0, sizeof(a));
for (i = 1; i <= n; i++) {
scanf("%d", &x);
a[x]++;
}

i = 0;
sum = 0;
while (sum < (n / 2 + 1)) {
i++;
sum += a[i];
}
printf("%d\n", i);
return 0;
}

输入:
11
4 5 6 6 4 3 3 2 3 2 1
输出:_________

4.
#include <stdio.h>

int solve(int n, int m)
{
int i, sum;

if (m == 1)
return 1;
sum = 0;
for (i = 1; i < n; i++)
sum += solve(i, m - 1);
return sum;
}

int main()
{
int n, m;

scanf("%d %d", &n, &m);
printf("%d\n", solve(n, m));
return 0;
}

输入:7 4
输出:_________

四、完善程序(前11空,每空2分,后2空,每空3分,共计28分)

1.(子矩阵)输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。若存在,输出所有子矩阵左上角的坐标;若不存在输出“There is no answer”。

#include <stdio.h>
#define SIZE 50

int n1, m1, n2, m2, a[SIZE][SIZE], b[SIZE][SIZE];

int main()
{
int i, j, k1, k2, good, haveAns;

scanf("%d %d", &n1, &m1);
for (i = 1; i <= n1; i++)
for (j = 1; j <= m1; j++)
scanf("%d", &a[i][j]);
scanf("%d %d", &n2, &m2);
for (i = 1; i <= n2; i++)
for (j = 1; j <= m2; j++)
① ;

haveAns = 0;
for (i = 1; i <= n1 - n2 + 1; i++)
for (j = 1; j <= ② ; j++) {
③ ;
for (k1 = 1; k1 <= n2; k1++)
for (k2 = 1; k2 <= ④ ; k2++) {
if (a[i + k1 - 1][j + k2 - 1] != b[k1][k2])
good = 0;
}
if (good == 1) {
printf("%d %d\n", i, j);
⑤ ;
}
}
if (haveAns == 0)
printf("There is no answer\n");
return 0;
}

2.(大整数开方)输入一个正整数n(1≤n<10100),试用二分法计算它的平方根的整数部分。

#include <stdio.h>
#include <string.h>
#define SIZE 200

typedef struct node {
int len, num[SIZE];
} hugeint;
//其中len表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推

hugeint times(hugeint a, hugeint b)
//计算大整数a和b的乘积
{
int i, j;
hugeint ans;

memset(ans.num, 0, sizeof(ans.num));
for (i = 1; i <= a.len; i++)
for (j = 1; j <= b.len; j++)
① += a.num[i] * b.num[j];
for (i = 1; i <= a.len + b.len; i++) {
ans.num[i + 1] += ans.num[i] / 10;
② ;
}
if (ans.num[a.len + b.len] > 0)
ans.len = a.len + b.len;
else
ans.len = a.len + b.len - 1;
return ans;
}

hugeint add(hugeint a, hugeint b)
//计算大整数a和b的和
{
int i;
hugeint ans;

memset(ans.num, 0, sizeof(ans.num));
if (a.len > b.len)
ans.len = a.len;
else
ans.len = b.len;
for (i = 1; i <= ans.len; i++) {
ans.num[i] += ③ ;
ans.num[i + 1] += ans.num[i] / 10;
ans.num[i] %= 10;
}
if (ans.num[ans.len + 1] > 0)
ans.len++;
return ans;
}

hugeint average(hugeint a, hugeint b)
//计算大整数a和b的平均数的整数部分
{
int i;
hugeint ans;

ans = add(a, b);
for (i = ans.len; i >= 2; i--) {
ans.num[i - 1] += ( ④ ) * 10;
ans.num[i] /= 2;
}
ans.num[1] /= 2;
if (ans.num[ans.len] == 0)
ans.len--;
return ans;
}

hugeint plustwo(hugeint a)
//计算大整数a加2后的结果
{
int i;
hugeint ans;

ans = a;
ans.num[1] += 2;
i = 1;
while ((i <= ans.len) && (ans.num[i] >= 10)) {
ans.num[i + 1] += ans.num[i] / 10;
ans.num[i] %= 10;
i++;
}
if (ans.num[ans.len + 1] > 0)
⑤ ;
return ans;
}

int over(hugeint a, hugeint b)
//若大整数a>b则返回1,否则返回0
{
int i;

if ( ⑥ )
return 0;
if (a.len > b.len)
return 1;
for (i = a.len; i >= 1; i--) {
if (a.num[i] < b.num[i])
return 0;
if (a.num[i] > b.num[i])
return 1;
}
return 0;
}

int main()
{
char s[SIZE];
int i;
hugeint target, left, middle, right;

scanf("%s", s);
memset(target.num, 0, sizeof(target.num));
target.len = strlen(s);
for (i = 1; i <= target.len; i++)
target.num[i] = s[target.len - i] - ⑦ ;
memset(left.num, 0, sizeof(left.num));
left.len = 1;
left.num[1] = 1;
right = target;
do {
middle = average(left, right);
if (over( ⑧ ) == 1)
right = middle;
else
left = middle;
} while (over(plustwo(left), right) == 0);
for (i = left.len; i >= 1; i--)
printf("%d", left.num[i]);
printf("\n");
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-17
楼主直接去NOIP贴吧 置顶帖有你想要的东西 给分吧 你不给我也被度娘吃掉了 大家都是oi 你说对吧

求试题,17届NOIP(C语言)普及组初赛试题
A. 1 B. 2 C. 3 D. 4 16.关于汇编语言,下列说法错误的是( )。 A. 是一种与具体硬件相关的程序设计语言 B. 在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试 C. 可以直接访问寄存器、内存单元、以及I\/O端口 D. 随着高级语言的诞生,如今已完全被淘汰,不再使用 17.( )是一种选优搜索...

NOIP普及组初赛复习内容
复赛:复赛的题型和考试形式与NOI类似,全部为上机编程题,但难度比NOI低。题目包括4道题,每题100分,共计400分。每一试题包括:题目、问题描述、输入输出要求、样例描述及相关说明。测试时,测试程序为每道题提供了5-10组测试数据,考生程序每答对一组得10-20分,累计分即为该道题的得分。二、试...

noip初赛(C语)要考哪些内容?
2. 数学及时间复杂度相关知识 基本算法的时间复杂度需要记住,例如排序算法的快排是O(nlgn)。3. 数学问题 多做数学题,提高解题能力。4. 程序阅读 采用“模拟”法,模拟程序运行。结合“猜测程序功能法”,可有效解决Noip初赛的程序阅读题。5. 程序填空 通过猜测和思考来解决问题。即使不会,只要其他...

全国信息学奥林匹克竞赛(noip)07年,08年,09年的试题和答案
 当年GDOI C类市或没有参加GDOI的市按初赛人数(分提高组或普及组)的15%(全国组委会的标准);当年GDOI B类市第7-8名按初赛人数的16%,第4-6名按初赛人数的17%;当年GDOI A类市(前三名)按初赛人数的20%确定各市复赛人数。 为了顾及暂时后进市普及工作的开展,如其组别最高分仍低于全省参加复赛的最低分...

noip初赛(C语)要考哪些内容?
(1) 普及组 1、 基本程序语句(判断、循环)2、 简单动态规划问题(背包问题、数字三角形)3、 简单模拟题(模拟题目意思,求出正确答案)4、 数学题(推,猜)5、 搜索(深搜、广搜、简单的剪枝)6、 基本算法(贪心、高精度、穷举等)普及组的复赛题一般都逃不出这六个大方面。个人经验是,...

参加NOIP初赛(普及组)要有那些知识准备?
一般说来,选择题只要多用心积累就可以了。问题解决题目的模式比较固定,大家应当做做以前的题目。写运行结果和程序填空也需要多做题目,并且培养良好的程序阅读和分析能力,就像语文的阅读理解一样。nbsp;近几年来,初赛的考查范围有了很大的变化,越来越紧跟潮流了。这就需要大家有比较广泛的知识,包括...

关于初中的NOIP问题
四、试题形式每次NOIP的试题分四组:普及组初赛题A1、普及组复赛题A2、提高组初赛题B1和提高组复赛题B2。其中,A1和B1类型基本相同,A2和B2类型基本相同,但题目不完全相同,提高组难度高于普及组。(一)初赛初赛全部为笔试,满分100分。试题由四部分组成:1、选择题:共20题,每题1.5分,共计30分。每题有5个备选答案...

请提供NOIP历届C语言试题。邮箱zhibinxx@hotmail.com.谢谢。
请提供NOIP历届C语言试题。邮箱zhibinxx@hotmail.com.谢谢。 普及组,C语言试题。网上试题多是PASCAL语言的。NOI官网中只有少数几年的试题,不全。... 普及组,C语言试题。网上试题多是PASCAL语言的。NOI官网中只有少数几年的试题,不全。 展开  我来答 ...

Noip主要是考什么普及组的C++,主要考什么
NOIP考的语言是C,C++或pascal,考察代码编写能力和数据结构及算法的掌握,可以自己报名,一般在下半年,现在还早,具体可以去查看NOI官网至于考查内容,初赛笔试考信息学史信息学常识和算法常识之类的,题目类型为单选多选阅读程序写结果和补全程序四个大题,在弱省特别好考,不需要额外准备,强省就不好说...

参加NOIP普及组要具备那些知识?
(一)初赛内容与要求:计基机算本常识 1.计算机和信息社会(信息社会的主要特征、计算机的主要特征、数字通信网络的主要特征、数字化)2.信息输入输出基本原理(信息交换环境、文字图形多媒体信息的输入输出方式)3.信息的表示与处理(信息编码、微处理部件MPU、内存储结构、指令,程序,和存储程序原理、...

相似回答