1、全国青少年信息学奥林匹克联赛初赛模拟试题 姓名 成绩 一、 单项选择题 (共20 题,每题1.5 分,共计30 分。每题有且仅有一个正确答案.)。 1. 在以下各项中,( )是CPU 的组成部分。 A. Cache B. RAM C. 寄存器 D. 主板 2.SQL语言又称为( ) A. 结构化定义语言 B. 结构化控制语言 C. 结构化查询语言 D. 结构化操纵语言 3.计算机运算速度的单位是( ) A、MTBF B、MIPS C、
2、MHZ D、MB 4.下面是关于微处理器MPU的描述,不正确的是( ) 。 A.微处理器是微型计算机的核心部件 B.微处理器是一块包含运算器和控制器的大规模集成电路芯片 C.微处理器的性能决定了微型计算机的档次 D.我们在购买微型计算机时,应该不断跟踪微处理器的更新 5. 某机字长8位,采用补码形式(其中1位为符号位),则机器数所能表示的范围是( ) A.-127 ~ 127 B.-128 ~ +128 C.-128 ~ +127 D.-128 ~ +128。 6.某计算机字长32位,其存储容量为4MB,若按字编址,它的寻址范围是 ( )。
3、 A、0~1M B、0~4MB C、0~4M D、0~1MB 7.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是( ) A. ABCED B. DBCEA C. CDABE D. DCBEA。 8. 冗余数据是指可以由其他数据导出的数据,下述关于数据库系统的叙述中正确的是( ) A. 数据库系统减少了数据冗余 B. 数据库系统避免了一切冗余 C. 数据库系统中数据的一致性是指数据类型的一致 D. 数据库系统比文件系统能管理更多的数据 9. 办公自动化(OA)
4、是目前广泛开展的一项计算机应用,按分类,它应属于( ) A.实时控制 B. 科学计算 C. 数据处理 D.计算机辅助设计 10. 结构化程序设计主要强调的是( ) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 11. 用树形结构来表示实体之间联系的模型称为( ) A. 关系模型 B. 层次模型 C. 网状模型 D. 数据模型 12. 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是( ) A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C
5、 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考 13.以下对计算机的产生有重要影响的人物是( )。 A.牛顿、维纳、图灵 B.莱布尼兹、布尔、图灵 C.巴贝奇、维纳、麦克斯韦 D. 莱布尼兹、布尔、克雷 14.在C 语言中,表达式23&2^5 的值是( ) A. 5 B. 6 C.7 D. 8 15.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是( ) A. bdgc
6、efha B.gdbecfha C. bdgaechf D.gdbehfca 16.二维数组A的每个元素是由6个字符组成的串。其行下标从0到8,其列小标从0到9,若按行优先存储,元素A[7][4]的起始地址与当A按列优先存储时( )的起始地址相同,设每个字符占一个字节。 A. A[2][8] B. A[3][9] C. A[5][7] D. A[0][8] 17. 一个8位二进制整数,采用补码表示,且有3个“1”和5个“0”组成,则最小值为( ) A. -127 B.-32 C. -125
7、 D.-3 18. 设A=B=true,C=D=false,以下逻辑运算表达式值为真的有( )。 A. (¬ A∧B)∨(C∧D∨¬A) B. ¬ (((A∧B)∨C)∧D) C. A∧ ¬(B∨C∨D)∨D D. (A∧(D∨C)) ∧B 19. (3C7E)16 + (37)8 的结果是( )。 A. (15519)10 B. (3C9D)16 C. (1100000110111)2 D. (17357)8 20. 已知一棵完全二叉树的叶子结点172个其结点总数为( ) A. 304
8、 B. 343 C. 342 D. 341 二.问题求解(共2 题,每题5 分,共计10 分) 1.有相同外形和颜色的10堆球,同一堆球中每个重量相同,每堆10个,其中9堆100斤,1堆90斤。问如何称一次找出90斤的那堆球。 写出方法和算式。 2.从1到9中取
9、7个不同数字组成7位数,如果不允许5与6相邻,有多少种方法。
三.阅读程序写结果(共4 题,每题8 分,共计32 分)
1. #include 10、i);
i++;j--;
}
}
int main()
{int a[6]={1,2,3,4,5,6},i,*p=a;
fun (p,0,3);
fun(p,1,4);
fun(p,3,5);
for(i=0;i<6;i++)
printf("%d",*(a+i));
printf("\n");
}
输出:
2.#include "string.h"
#include "stdio.h"
int strle(char a[],char b[])
{ int num=0,n=0;
while(*(a+num)!='\0') num++; 11、
while(b[n]){ *(a+num)=b[n];num++;n++;}
return (num);}
int main()
{ char str1[81],str2[81],*p1=str1,*p2=str2;
gets(p1); gets(p2);
printf("%d\n",strle(p1,p2));
while(1);
}
输入:yruyrruyeterrrrr
uitryuii
输出:
3. #include 12、le(x
int main()
{ int k=0;
char c='A';
do
{ switch(c++)
{ case 'A': k++;break;
case 'B': k-- 13、
case 'C': k+=2;break;
case 'D': k=k%2;continue;
case 'E': k=k+10;break;
default: k=k/3;
}
k++;
}while(c<’C’) ;
printf("k=%d\n",k);
while(1);
}
输出:
四.完善程序 (前4 空,每空2.5 分,后6 空,每空3 分,共28 分)
1. 输入n组数,每组2个整数,将每组数的逆序和的逆序按习惯输出
#include 14、 int i,j,m[n],b[n][20],max,s,sum[n];
char str1[n][20],str2[n][20];
for(i=0;i 15、 16、 if(b[i][j]>9)
{ s=b[i][j]/10; ; }
else s=0;
}
if(s!=0)
{m[i]++;b[i][j]=s;}
}
for(i=0;i 17、 { if(b[i][j]==0)
{ if(s==1)
printf("%d",b[i][j]);
else s=0;
}
else {s=1;printf("%d",b[i][j]);}
}
printf("\n");
}
18、
return 0;
}
int main()
{ int n;
scanf("%d",&n);
print(n);
while(1);
return 0;
}34
1998
1
输入:3 输出:
24 1
4358 754
305 794
2.在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。
如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的 19、好,其次,加数个数相同的,最小的分数越大越好。如: 19/45=1/3 + 1/12 + 1/180 19/45=1/3 + 1/15 + 1/45 19/45=1/3 + 1/18 + 1/30,
19/45=1/4 + 1/6 + 1/180 19/45=1/5 + 1/6 + 1/18.
最好的是最后一种,因为1/18比1/180,1/45,1/30,1/180都大。 给出a,b(0 20、自小到大排列,依次是单位分数的分母。
Sample Input
1
19 45
Sample Output
5 6 18
#include 21、 l2=min(y*(limt-deep+1)/x, );
for (i=l1;i<=l2;i++)
{ xx= x ;yy=y ;
way[deep]=i;
xx= ;
if (x<0)continue;
yy=yy*i;
if ( deep 22、 mark=1;best=i;
for (j=1;j<=limt;j++)
ans[j]=way[j];
}
}
}
void work()
{ long long i;
mark=0;way[0]=1;best=99999999;
while(mark= =0)
{ ;
;
}
for (i=1;i<=limt;i++)
23、 printf(“%d “,ans[i]);
}
int main()
{ Scanf(“%d %d”,&a,&b);
work();
}
参考答案:
一.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
C C B D C A D A C B B C B C D A C B B B
二.1) 550-x 2)a(9,7)-a(2,2)*a(6,6)* 24、c(7,5)=12500
三.1.51017321538
2.24
3.0 8 9 5 6 7 4 11 31
4,k=4
四.
1.0 2. Str2[i][j]!=’\0’ 3.B[i][j]+=str2[i][j]-48;s=0; 4.B[i][j]%=10
1.y/x 2. best-1 3. xx*i-yy 4. (i 25、
#include 26、0;i 27、) {b[i][j]+=str2[i][j]-48;s=0;} ;
if(b[i][j]>9)
{ s=b[i][j]/10; b[i][j]%=10; }
else s=0;
}
if(s!=0)
{m[i]++;b[i][j]=s;}
}
for(i=0;i 28、 {s=0;
for(j=0;j 29、 }
printf("\n");
}
return 0;
}
int main()
{ int n;
scanf("%d",&n);
print(n);
while(1);
return 0;
}
#include 30、mt,way[100001];
void dfs(long long x,long long y,long long deep)
{ long long l1,l2,i,xx,yy,j;
l1=max(way[deep-1]+1,y/x);
l2=min(y*(limt-deep+1)/x,best-1);
for (i=l1;i<=l2;i++)
{ xx=x;yy=y;
way[deep]=i;
xx=xx*i-yy;
if (x<0)continue;
31、 yy=yy*i;
if ( deep






