《NOIP初赛模拟题2(C++).doc》由会员分享,可在线阅读,更多相关《NOIP初赛模拟题2(C++).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流NOIP初赛模拟题2(C+)【精品文档】第 9 页一、选择题:(共 20 小题,每题1.5 分;共30 分)1.对存储器按字节进行编址,若某存储器芯片共有10 根地址线的引脚,则该存储器芯片的存储容量为( )。(A) 512B (B) 1KB (C) 2KB (D)4KB (E)8KB2.在待排序的数据表已经为有序时,下列排序算法中花费时间反而多的是( )。(A)堆排序 (B)希尔排序 (C)冒泡排序 (D)快速排序 (E)二分排序3.某数列有1000 个各不相同的单元,由低至高按序排列,现要对该数列进行二分法检索,在最坏的情况下,需要检索( )单元。(
2、A)1000 (B)10 (C)100 (D)500 (E) 3004.已知数组a 中,每个元素ai,j在存储时要占3 个字节,设i 从1 变化到8,j从1 变化到10,分配内存实是从地址sa 开始连续按行存储分配的。试问:a5,8的起始地址为( )。(A)sa+141 (B)sa+180 (C)sa+222 (D)sa+225 (E)sa+1555.在C语言函数调用时,数组形参得到的是实际参数的( )。(A) 数值 (B) 地址 (C)值 (D)变量 (E)以上都不是6.一个24*24 点阵的汉字字形信息所占的字节数为( )。(A) 2 (B) 8 (C) 24 (D) 32 (E) 727
3、. 在微机系统中,最基本的输入输出模块BIOS 存放在( ) 中。(A) RAM (B) ROM (C) 硬盘 (D)寄存器 (E)控制器8. 十进制算术表达式:3*512+5*64+2*8+1 的运算中,用二进制表示为( )。(A)1011010001 (B) 10110100011 (C) 11101010001 (D) 11110100011 (E)1110009.设栈S 的初始状态为空,现对序列1,2,3,4,5在栈S 上,依次进行如下操作(从元素1 开始,出栈后不再进栈):进栈,出栈,进栈,进栈,出栈,出栈。试问出栈的元素序列是( )。(A)1,2,3 B) 1,3,2 C) 3,2
4、,1 D) 2,3,1 (E)以上都不对10.E-mail 邮件本质上是一个( )(A)文件 (B)电报 (C)电话 (D)传真 (E)电讯11.一棵二叉树的高度为h,所有结点的度为0,或为2,则此树最少有( )个结点(A)2h-1 (B)2h-1 (C)2h+1 (D)h+1 (E)h*h+112.无向图G=(V,E),其中V=a,b,c,d,e,fE=(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)对该图进行深度优先遍历,得到的顶点序列正确的是( )(A)a,b,e,c,d,f (B)a,c,f,e,b,d (C)a,e,b,c,f,d (D)a,b,e,
5、d,f,c (E)以上都不对13.C+ 编译程序是( )(A) 把C+ 源程序转换成可运行的EXE 文件的程序(B) 把C+ 源程序转换成等价的目标码的程序(C) 生成和修改一个C+ 语言源程序的等程序(D) 把C+ 的目标码程序转换成可运行的EXE 文件的程序(E) 生成一个等价的汇编程序14. 将三封信投到4 个邮筒,最多的投法有( )(A)24种 (B)4种 (C)64种 (D)81种 E. 315. 电子信函(电子邮件)的特点之一是( )。(A)比邮政信函,电报,电话,传真都更快(B)在通信双方的计算机之间建立其直接的通信线路后即可快速传递数字信息(C)采用存储-转发方式在网络上逐步传
6、递信息,不象电话那样直接、及时,但费用低廉(D)在通信双方的计算机都开机工作的情况下即可快速传递数字信息16. 以下不属于多媒体硬件的是( )(A)主机(B)光驱(C)声卡(D).音箱(E). 超级解霸17. 正确的二维数组类型说明是( )(A) int ar25,5;(B) int ar2(5,5);(C) int ar255;(D)int ar25(5);(E)int ar2(5)(5);18.下列不属于信息处理的是( )(A)信息加工(B)信息分类(C)信息技术(D)信息采集(E)信息存储19.在windows 中,最小化一个应用程序窗口后,该程序将( )。(A)被终止执行 (B) 被暂
7、停执行 (C)被转入后台继续执行(D)以上答案都不对20、在下图中,从顶点( )出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次。A. A点 B. B点 C. C点 D. D点 E. E点二、问题求解:(第1 小题4 分,第2-3 小题各3 分,共1 分)问题1: 在所有三位数中,各位数字从高位到低位顺次减小的数共有 个。问题2:银条一位银矿勘探员无力预付 3 月份的房租。他有一根长31 英寸的纯银条,因此他和女房东达成如下协议。他说,他将把银条切成小段。3 月份的第一天,他给女房东1 英寸长的一段,然后每天给她增加1 英寸,以此作为抵押。勘探员预期到3 月份的最后一天,他能全数付清租
8、金,而届时女房东将把银条小段全部还给他。3 月份有31 天,一种办法是把银条切成31 段,每段长1 英寸。可是这处花很多功夫。勘探员希望既履行协议,又能使银条的分段数目尽量减少。例如,他可以第一天给女房东1 英寸的一段,第二天再给1 英寸的一段,第三开他取回这两段1 英寸的而给她3 英寸的一段。假设银条的各段是按照这种方式来回倒换的话,勘探员至少需要把他的银条切成_段?问题3:换不开的钞票钱柜里有 1.15 美元,一位顾客提出:把1 美元的钞票换成硬币,但出纳小姐说换不开,后来这位顾客提出:把50 美分的钞票换成硬币,但出纳小姐又说换不开,而实际上,出纳小姐也无法把25 美分、10 美分、5
9、美分的钞票换成硬币。请问钱柜里到底有哪些硬币?他们分别有多少枚?(注:1美元合100美分,小币值的硬币有50美分、25美分、10美分、5美分和1美分)答:_。三、写出程序的运行结果:(每小题 6 分,共32 分)1#include#includeusing namespace std;int main()int n=6,m=3;int i,j,k,l;for(i=-n;i=n;i+)k=n-abs(i);l=k;for(l=1;l=39-k;l+) cout ;for(j=-k;jk-m) cout(n-(i+n)/2); else cout ;coutendl;return 0;输出结果:
10、2#includeusing namespace std;int main()int k;char ch,a10;for(k=0;k10;k+) ak=A+k+1;for(k=0;k10;k+)ch=ak;ak=a9-k;a9-k=ch;for(k=0;k10;k+) coutak;coutendl;return 0;输出结果: 3#includeusing namespace std;int m,n,p;float x;void mm(int m,float x)int n;m=m+1;n=m+1;x=n*3;p=n;int main()m=8;n=5;p=3;x=1.0;mm(n,x);c
11、outm n p xendl;return 0;输出结果: 4.#include#define n 5using namespace std;int main()int ann,i,j,k;for(i=0;in;i+) for(j=0;jn;j+) aij=0;k=1;for(i=1;i=i;j-) ajj-i=k; k+;for(i=0;in;i+)for(j=0;jn;j+) coutaij ;coutendl;return 0;输出结果: 5. #includeusing namespace std;int main()char ch;int i,n,m,sum=0;cinch;swit
12、ch (ch)case A:for(i=4;in;sum=sum+n;break;case B:cinm;for(i=1;in;sum=sum+n;break;case C:docinn;sum=sum+n;while(sumn;while(nn;break;coutsumendl;return 0;(1)输入 A 4 1 2 3 4 5 6 7 8 9 时,结果: (2)输入 B 4 1 2 3 4 5 6 7 8 9 时,结果: (3)输入 C 4 1 2 3 4 5 6 7 8 9 时,结果: (4)输入 D 4 1 2 3 4 5 6 7 8 9 时,结果: 四、完善程序(第 1 题每
13、空2 分第2、3 题每空3 分,共32 分)第1 题:孪生素数是指两个相差为 2 的素数,例如:3 和5,5 和7,11 和13 等。下面程序可输出 15 对孪生素数,其中函数q 判断整数a 是否为素数。#includeusing namespace std;int q(int a)int k,flag;flag= 1 ;k=2; while( 2 ) if(a%k=0) 3 ; else k+; return flag;int main()int k,n;n=0;k=2;doif(q(k)& 4 )n=n+1;coutk,k+2endl;k=k+1;while(n!=15);return 0
14、;第二题:已知有字符型数组a 中存放着从第1 届到第16届足球世界杯冠军国家的名字,下面的函数可求出历界世界杯比赛共有几个国家曾获得过世界杯冠军,请填空完成。int fun(char a)int k,j,s;bool mult; 5 ;for(j=2;j=16;j+)k=1;mult=false;while(!mult & 6 ) if( 7 ) mult=true; else k=k+1;if(!mult) s= 8 ;return s;第三题:Fibonacci(裴波那契)数列的规律是:前2 个数均为1,从第3 个数开始每个数等于它前面两个数之和,即:1,1,2,3,5,8,13,21,3
15、4,55,89,144,233,377,.。已知任意一个大于0 的整数可以表示为若干个互不相同的fibonacci 之数和。例如:121=89+21+8+3下面的程序是由键盘输入一个正整数n,输出组成n 的互不相同的fibonacci 数。例如:若输入 121则输入121=+89+21+8+3本程序的算法如下:(n=121 为例)1)寻找小于或等于n 的最大的fibonacci 数a(例如89),并以a 作为组成n的一个数输出。2)若na 则以n-a 作为新的任意正整数(例如32),重复步骤1.若n=a,则结束。程序中的函数find 返回小于或等于n 的最大的fibonacci 数。#includeusing namespace std;int data10000=0,t=0;int find(int n)int a,b,c;a=1;b=1;doc= 9 ;a=b;b=c;while(bn);if(b=n) return 10 ;else return 11 ;int p(int n)t+;datat=find(n);if(datatn) p( 12 );else return 0;void print()int i;coutdata1;for(i=2;i=t;i+) cout+n;coutn=;p(n);print();coutendl;return 0;