




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NOIP 初赛模拟试题 (2小时 C语言 普及组) 一、选择题(共20题,每题1.5分,共计30分。每题有5个备选答案,前10个题为单选题,即 每题有且只有一个正确答案,选对得分;后10题为不定项选择题,即每题有1至5个正确答案,只 有全部选对才得分)。 1.微型计算机的性能主要取决于( )。 A)内存 B)主板 C)中央处理器 D)硬盘 E)显示器 2. 128KB的存储器用十六进制表示,它的最大的地址码是( ) A)10000 B)EFFF C)1FFFF D)FFFFF E)FFFF 3.能将高级语言程序转换为目标程序的是( ). A)调试程序 B)解释程序 C)编辑程序 D)编译程序 E)连接程序 4A=11001010B,B=00001111B,C=01011100B,则A B C=( )B A)01011110 B)00001111 C)01011100 D)11001110 E)11001010 5.计算机病毒传染的必要条件是( ) 。 A)在内存中运行病毒程序 B)对磁盘进行读写操作 C)在内存中运行含有病毒的可执行程序 D)复制文件 E)删除文件 6. TCPIP协议共有( )层协议 A)3 B)4 C)5 D)6 E)7 7.192.168.0.1是属于( ). A)A类地址 B)B类地址 B)C类地址 D)D类地址 E)E类地址 8.对给定的整数序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,采用快速排序的第 一趟扫描的结果是( ). A)(24,21,35,54,67, 78,63,73,89) B)(24,35,21,54,67, 78,63,73,89) C)(24,21,35,54,67, 63,73,78,89) D)(21,24,35,54,63, 67,73,78,89) E)(24,21,35,54,67, 63,73,78,89) 9.一棵n个结点的完全二叉树,则二叉树的高度h为( ). A)n/2 B)log2n C)(log2n)/2 D) log2n+1 E)2n-1 10.下图对该图进行广度优先拓朴排序得到的顶点序列正确的是( ). A)1,2,3,4,5,6 B)1,3,2,4,5,6 C)1,3,2,4,6,5 D)1,2,3,4,6,5, E)1,3,2,4,5,6 11.下列属于冯.诺依曼计算机模型的核心思想是( ). A)采用二进制表示数据和指令; B)采用”存储程序”工作方式 C)计算机硬件有五大部件(运算器、控制器、存储器、输入和输出设备) D)结构化程序设计方法 E)计算机软件只有系统软件 12.下列属于输入设备的是( ). A)打印机 B)扫描仪 C)光笔 D)鼠标 E)显示器 13.算式(1000)10-(100)16-(10)8的结果是( ). A)(890)10 B)(986)8 C)(1011100000)2 D)(2E0)16 E)(736)10 14.下面关于算法的正确的说法是( ) A)算法必须有输出 B)算法必须在计算机上用某种语言实现 C)算法不一定有输入 D)算法必须在有限步执行后能结束 E)算法的每一步骤必须有确切的定义 15.下列关于十进制数100的正确说法是( ). A)原码为01100100B B)反码为64H C)反码为9BH D)补码为64H E)补码为9BH 16.关于windows系统中的窗口和对话框的说法正确的是( ). A)对话框能移动和改变大小 B)窗口能移动和改变大小 C)对话框只能移动和但不能改变大小 D)对话框不能移动但能改变大小 E)窗口能移动和但不能改变大小 17下列逻辑运算正确的是( )。 A) A(A + B )= A B) A +(AB)= A C) A(B + C )= AB + AC D) A +(BC)=(A + B)(A + C) E) A+1=A 18.下列关于排序说法正确的是( ). A)插入排序、冒泡排序是稳定的 B)选择排序的时间复杂性为O(n2) C)选择排序、希尔排序、快速排序、堆排序是不稳定的 D)希尔排序、快速排序、堆排序的时间复杂性为O(nlog2n) E)快速排序是速度最快的排序 19.对于一个大小为3的栈,若输入队列为123456,则下列输出队列有可能的是( )。 A)123456 B)654321 C)432165 D)431256 E)321654 20. 设有一个含有13个元素的Hash表(012),Hash函数是:H(key)=key % 13,其中% 是求余数 运算。用二次探查法解决冲突,则对于序列(8、31、20、33、18、53、27),则下列说法正确 的是( ) 。 A)27在1号格子中 B)33在6号格子中 C)31在5号格子中 D)20在7号格子中 E)18在4号格子中 二问题求解(5分*2=10分) 1一个商场有m种颜色的小球,每种小球足够多,在这m种小球中挑选n个小球的选法有多少种? 如 m=2,n=3 时有4种选法分别是:两种小球的个数分别为03,12,21,30问:当m=4,n=4时 选法数=_。 2如果一棵m度树中有n1个度为1的结点,n2个度为2的结点,.有 nm个度为m的结点,则该树中叶结点的的个数=_. 三.阅读程序写出正确的程序运行结果(4分*8=32分) #include int n,s,d10; void multi (int k) int i,j,number; for(i=0;i=0;j-) number=10*number+dj; s=s+number; 输入:5 输出: #include int a1,z; int sue(int x) int k; z=z-x; k=x*x; return k; main () z=10; a1=sne(10)*sne(z); printf(%d %dn,a1,z); z=10; a1=sne(z)*sne(10); printf(%d %dn,a1,z); 输出: #include int n,m; float x,y; int p(float x,int n) if(n%2) x=x/n; n=n+1; m=m-1; main () n=57%6; m=35/2; x=15.0; y=10.0; p(y,n); printf(n=%d m=%dn,n,m); 输出: #include int n,a20; long count=0; void sort (int a2,int begin,int end) int i,j,t; for(i=begin;iend;i+) for(j=i+1;ja2j) t=a2i;a2i=a2j;a2j=t; void perm (int k) int j,p,t,a220; if(k=n) count+; for(p=1;p=n;p+) printf(%ld,ap); printf( ); if(count%3=0) printf(n); return ; for(j=k;j=n;j+) for(p=1;p=n;p+) a2p=ap; t=ak;ak=aj;aj=t; sort(a,k+1,n); perm(k+1); for(p=1;p=n;p+) ap=a2p; main () int i; scanf(%d,&n); for(i=1;i=n;i+) ai=i; perm(1); printf(n the total=%ldn,count); 输入:3 输出: 四.完善程序(前4空,每空2.5分,后6空,每空3分,共28分) 字符串匹配是对于两个字符串p和s,查找p是否是s的子序列的方法,对于两个长度分别为m和n的字符序列,当p是s的子序列时,输出p在s中首次出现的位置,否则输出“失败”信息。 #include #include int math(char *p,char *s) mian () int find; char str1=cde; char str2=abcdefg; find=match(str1,str2); if(find) printf(%dn,find); else printf(faliuren); int math (char *p,char *s) int i,j,m,n; m=strlen(p) n=; ; do i+; ; while(jm&si+j=pj) ; if(j=m) return i+1; while(); return 0; 下面程序对两个整数有限集A和B进行交(*)、差()、和并()运算,得到集合C。 #include int set(int a,int b,int c,int na,int nb,char op) int main () int i,k,m,n,seta100,setb120,setc220; scanf(%d,&m); for(i=1;i=m;i+) scanf(%d,&setai); scanf(%d,&n); for(i=1;i=n;i+) scanf(%d,&setbi); k=set(seta,setb,setc,m,n,+); for(i=1;i=k;i+) printf(%5d,setci); int set(int a,int b,int c,int na,int nb,char op) int flag,nc=0,i,j; for(i=1;i=na;i+) flag=1; ; while(flag&j=nb) if(ai=bj) ; j+; if(flag&(op=-|op=+)|(&op=*) ; if() for(i=1;i=B) and (B=C)的取值为true时,那么表达式(AC) or (B=C)的取值为( )。 A True B False C 无法判断 D 只有当ABC三个数都为正数时才为true E 只有当ABC三个数都为正数时才为false (6) 下列排序方法那种属于稳定排序( ) A 希尔排序 B 堆排序 C 冒泡排序 D 快速排序 E 插入排序 (7) 显示器是计算机必备的输出设备,它能将计算机内部的信息通过字符和图形在屏幕上表示出来。( )和( )是显示器的两个重要技术指标。 A 分辨率 B 对比度 C 亮度 D 灰度 E 象素个数 (8) 在TCP/IP协议中,TCP和IP提供了什么服务( )? A 链路层 B 网络层 C 传输层 D 会话层 E 物理层 (9) 对于一个大小为3的栈,若输入队列为123456,则下列输出队列有可能的是( ) A. 123456 B. 654321 C. 432165 D. 431256 E. 321654 (10) 192.168.0.249是属于( ) A. A类地址 B. B类地址 C. C类地址 D. D类地址 E. E类地址 一、 问题求解 (1) 已知8个元素为(26、75、15、23、14、62、72、19),按照依次插入结点的方法生成一颗二叉排序树,则该树的深度为_? (2) 编号为1到13的纸牌顺时针排成一圈,有人从编号为1的牌从数字1开始顺时针数下去,1、2、3、20、21、,一圈又一圈。问:当数到数字N时,所在纸牌的编号为_? 三.阅读程序写出正确的程序运行结果(4分*8=32分) #include int n,s,d10; void multi (int k) int i,j,number; for(i=0;i=0;j-) number=10*number+dj; s=s+number; 输入:5 输出: #include int a1,z; int sue(int x) int k; z=z-x; k=x*x; return k; main () z=10; a1=sne(10)*sne(z); printf(%d %dn,a1,z); z=10; a1=sne(z)*sne(10); printf(%d %dn,a1,z); 输出: #include int n,m; float x,y; int p(float x,int n) if(n%2) x=x/n; n=n+1; m=m-1; main () n=57%6; m=35/2; x=15.0; y=10.0; p(y,n); printf(n=%d m=%dn,n,m); 输出: #include int n,a20; long count=0; void sort (int a2,int begin,int end) int i,j,t; for(i=begin;iend;i+) for(j=i+1;ja2j) t=a2i;a2i=a2j;a2j=t; void perm (int k) int j,p,t,a220; if(k=n) count+; for(p=1;p=n;p+) printf(%ld,ap); printf( ); if(count%3=0) printf(n); return ; for(j=k;j=n;j+) for(p=1;p=n;p+) a2p=ap; t=ak;ak=aj;aj=t; sort(a,k+1,n); perm(k+1); for(p=1;p=n;p+) ap=a2p; main () int i; scanf(%d,&n); for(i=1;i=n;i+) ai=i; perm(1); printf(n the total=%ldn,count); 输入:3 输出: 四.完善程序(前4空,每空2.5分,后6空,每空3分,共28分) 字符串匹配是对于两个字符串p和s,查找p是否是s的子序列的方法,对于两个长度分别为m和n的字符序列,当p是s的子序列时,输出p在s中首次出现的位置,否则输出“失败”信息。 #include #include int math(char *p,char *s) mian () int find; char str1=cde; char str2=abcdefg; find=match(str1,str2); if(find) printf(%dn,find); else printf(faliuren); int math (char *p,char *s) int i,j,m,n; m=strlen(p) n=; ; do i+; ; while(jm&si+j=pj) ; if(j=m) return i+1; while(); return 0; 下面程序对两个整数有限集A和B进行交(*)、差()、和并()运算,得到集合C。 #include int set(int a,int b,int c,int na,int nb,char op) int main () int i,k,m,n,seta100,setb120,setc220; scanf(%d,&m); for(i=1;i=m;i+) scanf(%d,&setai); scanf(%d,&n); for(i=1;i=n;i+) scanf(%d,&setbi); k=set(seta,setb,setc,m,n,+); for(i=1;i=k;i+) printf(%5d,setci); int set(int a,int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论