减小字体
增大字体
信息学竞赛普及组初赛模拟试题(五)
一、选择题:(每题1.5分,共计30分。每题有5个选项,前10题为单选题,后10题为不定项选择题,全部选对才得分)。 1. 二进制数11011011的十进制值是( ) A. 202 B. 219 C. 193 D. 209 2. 我国研制的银河Ⅲ型的超级计算机通过基准程序的测试,其峰值速度是( ) A. 80亿次 B. 100亿次 C. 130亿次 D. 150亿次 3. 程序段如下: for(i=1;i<=5;i++)
for(j=2;j<=i;j++)
printf(“*\n”); 输出’*’的个数是( ) A. 5 B. 10 C. 15 D. 25 E. 30 4. 设待排序的记录为(49,38,65,97,76, 13,27 , 49, 55, 4),经过下过程将序列排序 第一趟:13, 27, 49, 55, 4, 49, 38, 65, 97, 76 第二趟:13, 4, 49, 38, 27, 49, 55, 65, 97, 76 第三趟:4, 13, 27, 38, 49, 49, 55, 65, 76, 97 问它所用的方法是:( ) A. 冒泡排序 B. 直接选择排序 C. 直接插入排序 D. 希尔排序 5. 设无向树T有7片树叶,其余顶点度均为3,则T中3度顶点有多少个( ) A. 5 B. 7 C. 9 D. 4 E. 8 6. 设连通图G的顶点数和边数与一立方体相同,即有8个顶点和12条边。任意一棵G的生成树的总边数为( ) A.7 B. 8 C. 9 D. 10 E. 11 7. 设有两个散列函数h1(k)=k mod 13 和 h2(k)=k mod 11 +1,散列表为T[0…12],用二次散列法解决冲突。函数h1用来计算散列地址,当发生冲突时,h2作为计算下一个探测地址的地址增量。假定某一时刻散列表的状态为: 0 1 2 3 4 5 6 7 8 9 10 11 12 80 44 35 下一个被插入的关键码为57,其插入的位置为( )。 A. 4 B. 5 C. 6 D. 7 E. 8 请根据下面是一段C程序,判断第8、9题。 for(h=1;h<n;h++)
{
x=A[h+1];
k=h;
while(k>=1&&A[k]>x)
{
A[k+1]=A[k];
k=k-1;
}
A[k+1]=x;
}
8. 假设在程序开始执行时,数组A[1…n]是一组随机整数。下列答案中,哪一个最好的描述了最差情况下的程序排序的时间复杂度?( ) A. O(n log2n) B. O(n) C. O(log2n) D. O(n2) E. O(2n) 9. 假设在程序开始执行时,数组A[1…n]是按关键字非递减有序排列时,下列答案中,哪一个最好的描述了最好情况下的程序排序的时间复杂度?( ) A. O(n log2n) B. O(n) C. O(log2n) D. O(n2) E. O(2n) 10.对下列四个序列用快速排序方法进行排序,以序列的第一个元素为划分的基准,在第一趟划分过程中,元素的移动数最多的是哪一个序列( ) A. 70 , 65 , 34 , 82 , 53 , 25 , 90 B. 82 , 53 , 25 , 70 , 65 , 34 , 90 C. 34 , 25 , 53 , 65 , 90 , 82 , 70 D. 53 , 25 , 65 , 70 , 34 , 90 , 82 E. 65 , 34 , 82 , 70 , 25 , 53 , 90 11.在计算机运行时,把程序和数据一样存放在内存中,这是1946年由_______所领导的研究小组正式提出并论证的。( ) A. 图灵 B. 冯·诺依曼 C. 布尔 D. 赫夫曼 E. 哈希 12.下面关于计算机的说法正确的是( ) A. 微机内存容量的基本计量单位是字节 B. 二进制数中右起第10位上的1相当于210 C. CPU每执行一个指令,就完成一步基本运算或判断 D. 1T=1024MB E. 32位的计算机中的“32”指的是字长 13.为什么说PASCAL是“高级语言”,是因为它( ) A. 必须在性能较高的机器上运行 B. 必须经过良好培训的高水平的程序员使用 C. 离机器的硬件较远 D. 开发的时间较长 E. 程序的性能较好 14.以下数据结构中,哪一个是线性结构?( ) A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 E. 队列 15.在下面关于计算机系统硬件的说法中不正确的是( ) A. 没有外部设备的计算机称为祼机 B. 当关闭计算机电源后,RAM中的程序和数据就消失了 C. 软盘和硬盘上的数据均可由 CPU直接存取 D. 软盘和硬盘驱动器既属于输入设备又属于输出设备 E. CPU主要由运算器、控制器和寄存器组成 16. 下面关于算法的正确说法是( ) A. 算法必须有输出 B. 算法必须在计算机上用某种语言实现 C. 算法不一定有输入 D. 算法必须在有限步执行后能结束 E. 算法是程序的灵魂 17.以下关于结构化程序的说法中,正确的是( ) A. 结构化程序是由单入口,单出口和循环三种结构组成 B. 结构化程序是出顺序、单入中和单出口三种结构组成 C. 结构化程序是由顺序、循环和GOTO语句结构组成 D. 结构化程序是由顺序、循环和分支三种结构组成 E. “自顶向下,逐步求精”是结构化程序设计方法的特点 18.栈S最多能容纳4个元素。现有6个元素按1,2,3,4,5,6的顺序进栈,问下列哪一个序列是可能的出栈序列?( ) A. 5,4,3,2,1,6 B. 3, 2, 5, 4, 1, 6 C. 2, 3, 5, 6, 1, 4 D. 1, 4, 6, 5, 2, 3 E. 4,5,3,6,2,1 19.下列排序算法中,哪些排序是不稳定的( ) A.快速排序 B. 基数排序 C. 希尔排序 D. 冒泡排序 E.选择排序 20.下列说法正确的是( ) A. 解释程序是接受参数,按照某一样板产生机器语言的计算机程序 B. BASIC语言程序通常需解释执行 C. 连接程序可以把经编译程序产生的目标程序变成可执行的机器语言程序 D. 就执行速度而言,编译程序比解释程序快 E. PASCAL通常是先编译后执行 二、问题求解题(每题5分,共计10分) 1. 由四个结点可以构造多少种不同的二叉树 . 2. 下图是一个设想有11项活动的活动网。其中有9个事件V1,V2,… V9,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。V1表示整个工程的开始,V9表示结束,与每个活动相联系的数ax(x=1…11)是执行该活动所需的时间(单位:天)。问完成整项工程至少需要 天,影响工程进度的关键活动有哪些: 。
三、程序阅读理解题 (每题8分,共计32分) 1.main()
{
int n,i,j,k,p;
i=2;j=0;k=1;
do
{
i++;p=j+k;j=k;k=p;
}while(i<12);
printf("F(12)=%d",p);
getch();
}
运行结果为:
2.int n;
int a[100]={0};
int f(int n)
{
int i;
if(a[n-1]>0) i=a[n-1];
else i=f(n-1);
if(a[n-2]>0) i=i+a[n-2];
else i=i+f(n-2);
a[n]=i;
return i;
}
main()
{
a[0]=1;a[1]=1;
printf("F(8)=%d\n",f(8));
getch();
}
运行结果为: 3.main()
{
int a[6]={0};
int i,j,s,t;
a[0]=1;t=0;
for(i=1;i<6;i++)
{
s=0;
for(j=0;j<i;j++)
s=s+a[j];
a[i]=s+1;
}
for(i=0;i<6;i++)
t+=a[i];
printf("t=%d\n",t);
getch();
}
运行结果为: 4.main()
{
int i,s,max,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
s=a[0];
for(i=1;i<10;i++)
{
if(s<0)s=0;
s+=a[i];
if(s>max)max=s;
}
printf("max=%d\n",max);
getch();
}
输入:8 9 –1 24 6 5 11 15 –28 9 运行结果为: 四、程序完善题 (每题14分,共计28分) 1.n×n方阵的每行每列都是自然数1..n的一个全排列,每行(列)无重复数字。 例: n=5时, 1 4 3 2 5 5 3 2 1 4 4 2 1 5 3 3 1 5 4 2 2 5 4 3 1 输入 n(>=2)和第一行数字(不检查错误) 输出 一个满足要求的方阵 因为只是要求每行(列)无重复数字,对第一行的每个数字,都四十五度斜向下写,写到行尽头就从行开头开始。这样就不会重复。 对于经过第y行,第x列的直线,斜率k=1 设:y=x+b 代入坐标,得出:b=y-x 令y=1,取首行的数:x=y-b x从1开始,到n,如果x为0或负数,则x=x+n,取出第一行的数。 程序只用一维数组,存第一行的数字。 #define MAXN 10000
int a[MAXN];
int x,y,n;
int f(int x,int y)
{
int b;
(1) ;
(2) ;
if(x<=0) (3) ;
return a[x];
}
main()
{
printf("Enter n:");
scanf("%d",&n);
if(n<2||n>MAXN)exit(0);
printf("Enter first line:");
for(x=1;x<=n;x++)
scanf("%d",&a[x]);
printf("Output:\n");
for(x=1;x<=n;x++)
printf("%4d",a[x]);
printf("\n");
for(y=2;y<=n;y++)
{
for(x=1;x<=n;x++)
printf("%4d", (4) );
printf("\n");
}
getch();
} 2.[程序说明] 设有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序。 本题用数组建立标志位等方法求解,用数组实现链式结构。 数组a[i]作为"指针"变量来使用,a[i]存放下一个结点的位置。设立指针j指向当前结点,则移动结点过程为j:=a[j],当数到m时,m结点出链,则a[j]:=a[a[j]]。 [程序] #define N 14
#define M 4
main()
{
int a[N];
int i,j,k,p;
for(i=0;i<N;i++)
a[i]=i+1;
a[N]=1;
(1) ;
k=1;
p=0;
do
{
(2) ;
k=k+1;
if(k==M)
{
printf("%4d",a[j]);
p++;
(3) ;
(4) ;
}
}while(p!=N);
getch();
}
参考答案 一、选择题:(每题1.5分,共计30分。每题有5个选项,前10题为单选题,后10题为不定项选择题,全部选对才得分)。
题号 1 2 3 4 5 6 7 8 9 10 答案 B C B D A A E D B E 题号 11 12 13 14 15 16 17 18 19 20 答案 B ACE C DE AC ABCDE DE BE AC BCDE
二、问题求解题(每题5分,共计10分))
1、 14 2、 19 ,(2分) a1,a4,a7,a10 (3分)
三、程序阅读理解题 (每题8分,共计32分)
1、F(12)=89 2、F(8)=21 3、 t=63 4、max=77
四、程序完善题 (每题14分,共计28分)
1、 ① b:=y-x; ② x:=1-b; ③ x:=x+n ; ④ f(x,y) 2、 ① j:=n ; ② j:=a[j]; ③ a[j]:=a[a[j]]; ④ k:=1;
|
|