试卷 2012年全国青少年信息学奥林匹克竞赛NOIP普及组初赛试卷
2012年全国青少年信息学奥林匹克竞赛NOIP普及组初赛试卷
单项选择题
第 1 题    单选题
计算机如果缺少(),将无法正常启动。
A.

内存

B.

鼠标

C.

U

D.

摄像头

第 2 题    单选题

使用冒泡排序对序列进行升序排列,每执行一次交换操作系统将会减少1个逆序对,因此序列 54321需要执行(  )次操作,才能完成冒泡排序。

A.

0

B.

5

C.

10

D.

15

第 3 题    单选题

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

A.

显示器

B.

CPU

C.

内存

D.

鼠标

第 4 题    单选题

如果一棵二叉树的中序遍历是BAC,那么它的先序遍历不可能是()。

A.

ABC

B.

CBA

C.

ACB

D.

BAC

第 5 题    单选题

      )不属于操作系统。

A.

Windows

B.

DO

C.

Photoshop

D.

NOI Linux

第 6 题    单选题

十六进制数9A在(    )进制下是232

A.

B.

C.

D.

十二

第 7 题    单选题

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

A.

 

B.

C.

D.

第 8 题    单选题

    )是一种先进先出的线性表。

A.

B.

队列

C.

哈希表(散列表)

D.

二叉树

第 9 题    单选题

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

A.

系统分配的栈空间溢出

B.

系统分配的堆空间溢出

C.

系统分配的队列空间溢出

D.

系统分配的链表空间溢出

第 10 题    单选题

蓝牙和Wi-Fi都是(       )设备。

A.

无线广域网

B.

无线城域网

C.

无线局域网

D.

无线路由器

第 11 题    单选题

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

A.

128KB

B.

1MB

C.

1GB

D.

4GB

第 12 题    单选题

    )就是把一个复杂的问题分成两个或更多的相同类似的子问题,再把子问题分解成更小的子问题……直到最后的子问题可以简单地直接求解。而原问题的解就是子问题解的并。

A.

动态规划

B.

贪心

C.

分治

D.

搜索

第 13 题    单选题

     )是目前互联网上常用的E-mail服务协议。

A.

HTTP

B.

FTP

C.

POP3

D.

Telnet

第 14 题    单选题

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

A.

资源管理器

B.

浏览器

C.

电子邮件

D.

编译器

第 15 题    单选题

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

A.

a,d, c, b

B.

b, a, c, d

C.

a, c, b, d

D.

d, a, b, c

第 16 题    单选题

矢量图(VectorImage)图形文件所占的贮存空间比较小,并且无论如何放大、缩小或旋转等都不会失真,是因为它(    )。

A.

记录了大量像素块的色彩值来表示图像

B.

用点、直线或者多边形等基于数学方程的几何图元来表示图像

C.

每个像素点的颜色信息均用矢量表示

D.

把文件保存在互联网,采用在线浏览的方式查看图像

第 17 题    单选题

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

A.

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

B.

军队发布命令

C.

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

D.

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

第 18 题    单选题

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

A.

电子管

B.

晶体管

C.

集成电路

D.

超大规模集成电路

第 19 题    单选题

原字符串中任意一段连续的字符所组成的新字符串称为子串。则字符“    AAABBBCCC”共有(  )个不同的非空子串。

A.

3

B.

12

C.

36

D.

45

第 20 题    单选题

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

A.

由研究蝙蝠,发明雷达

B.

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

C.

由研究海豚,发明声纳

D.

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

问题求解
第 21 题    填空题

如果平面上任取n个整点(横纵坐标都是整数),其中一定存在两个点,它们连线的中点也是整点,那么n至少是__________

第 22 题    填空题

NOI期间,主办单位为了欢迎来自各国的选手,举行了盛大的晚宴。在第十八桌,有5名大陆选手和5名港澳选手共同进膳。为了增进交流,他们决定相隔就坐,即每个大陆选手左右旁都是港澳选手,每个港澳选手左右旁都是大陆选手。那么,这一桌一共有_______种不同的就坐方案。

注:如果在两个方案中,每个选手左右相邻的选手相同,则视为同一种方案。

阅读程序写结果
第 23 题    填空题
#include <iostream>
using namespace std;
int a,b,c,d,e,ans;
int main()
{
    cin>>a>>b>>c;
    d=a+b;
    e=b+c;
    ans=d+e;
    cout<<ans<<endl;
    return 0;  
}

输入:1 2 5

输出:______

第 24 题    填空题
#include <iostream>
using namespace std;
int n,i,j,a[100][100];
int solve(int x,int y)
{
    int u,v;
    if(x==n) returna[x][y];
    u=solve(x+1,y);
    v=solve(x+1,y+1);
    if(u>v)return a[x][y]+u;
    else returna[x][y]+v; 
}
int main()
{
    cin>>n;
    for(i=1;i<=n;i++)
        for(j=1;j<=i;j++)cin>>a[i][j];
    cout<<solve(1,1)<<endl;
    return 0;  
}

输入:

5

2

-1 4

2 -1 -2

-1 6 4 0

3 2 -1 5 8

输出:____

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

输入:18

输出:____

第 26 题    填空题
#include <iostream>
#include <string>
using namespace std;
int n,i,j,ans;
string s;
char get(int i)
{
    if(i<n)return s[i];
    else returns[i-n];
}
int main()
{
    cin>>s;
    n=s.size();
    ans=0;
    for(i=1;i<=n-1;i++)
    {
        for(j=0;j<=n-1;j++)
            if(get(i+j)<get(ans+j))
            {
                ans=i;
                break; 
            }
            elseif(get(i+j)>get(ans+j)) break;
    }
    for(j=0;j<=n-1;j++)cout<<get(ans+j);
    cout<<endl;
    return 0;  
}

输入:CBBADADA

输出:________

完善程序
第 27 题    填空题

(坐标统计)输入n个整点在平面上的坐标。对于每个点,可以控制所有位于它左下方的点(即x、y坐标都比它小),它可以控制的点的数目称为“战斗力”。依次输出每个点的战斗力,最后输出战斗力最高的点的编号(如果若干个点的战斗力并列最高,输出其中最大的编号)。

#include <iostream>
using namespace std;
const int SIZE =100;
int x[SIZE],y[SIZE],f[SIZE];
int n,i,j,max_f,ans;
int main()
{
    cin>>n;
    for(i=1;i<=n;i++)cin>>x[i]>>y[i];
    max_f=0;
    for(i=1;i<=n;i++)
    {
        f[i]=   ①   ;
        for(j=1;j<=n;j++)
        {
            if(x[j]<x[i]&&   ②   )
                  ③      ;
        }
        if(      ④       )
        {
            max_f=f[i];
                ⑤    ;
        }
    }
    for(i=1;i<=n;i++)cout<<f[i]<<endl;
    cout<<ans<<endl;
    return 0;  
}
第 28 题    填空题

(排列数)输入两个正整数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 namespacestd;
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;
                    }
                     ⑤   ;
            }
        }
    }
    return 0;  
}
答题卡
单项选择题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
问题求解
21 22
阅读程序写结果
完善程序
27 28
题目总数:28
总分数:100
时间:90分钟