N O I P初赛模拟考试题及答案解析集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]信息学奥林匹克联赛初赛模拟试题(普及组C语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,共30分)1.被誉为“人工智能之父”的是()。
A.冯·诺依曼。
B.巴贝奇。
C.文顿·瑟夫和卡恩。
D.阿兰·图灵。
E.弗雷德里克·特曼。
2.下列哪个不是CPU(中央处理单元)()。
A.IntelItaniumB.DDRSDRAMC.AMDAthlon64D.AMDOpteronE.IBMPower53.常见的邮件传输服务器使用()协议发送邮件。
A.HTTPB.SMTPC.TCPD.FTPE. POP34.下列无符号数中,最小的数是()。
10 C.(37)8 D.(2A)165.下列哪个软件属于操作系统软件()。
A.MicrosoftWordB.PhotoshopC.FoxmailD.WinRARE.RedHatLinux6.下列哪个不是计算机的存储设备()。
A.文件管理器B.内存C.高速缓存D.硬盘E.U盘7.组成’教授’(jiaoshou)’副教授’(fujiaoshou)与’讲师’(jiangshi)这三个词的汉字,在GB2312-80字符集中都是一级汉字.对这三个词排序的结果是()。
A教授,副教授,讲师B.副教授,教授,讲师C讲师,副教授,教授D.副教授,讲师,教授8.彩色显示器所显示的五彩斑斓的色彩,是由红色、蓝色和()色混合而成的。
A.紫B.白C.黑D.绿E.橙9.以下哪个软件不是即时通信软件()。
A.网易泡泡B.MSNMessengerC.GoogleTalkD.3DSMaxE.QQ10.一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转换的设备,这种设备是()。
A.调制解调器B.路由器C.网卡D.网关E.交换机11.计算机病毒传染的必要条件是()。
A.在内存中运行病毒程序B.对磁盘进行读写操作C.在内存中运行含有病毒的程序D.复制文件12.一个高度为h的二叉树最小元素数目是()。
A.2h+1B)hC)2h-1?D)2h E)2h-113.已知数组A中,每个元素A(I,J)在存贮时要占3个字节,设I从1变化到8,J从1变化到10,分配内存时是从地址SA开始连续按行存贮分配的。
试问:A(5,8)的起始地址为()。
A.SA+141B.SA+144C.SA+222D.SA+22514.电线上停着两种鸟(A,B),可以看出两只相邻的鸟就将电线分为了一个线段。
这些线段可分为两类;一类是两端的小鸟相同;另一类则是两端的小鸟不相同。
已知:电线两个顶点上正好停着相同的小鸟,试问两端为不同小鸟的线段数目一定是()。
A.奇数B.偶数C.可奇可偶D.数目固定15.十进制数13和14,进行“与”操作的结果是()。
A.27B.12C.15D.1116.满二叉树的叶结点个数为N,则它的结点总数为()。
A.NB.2*NC.2*N–1D.2*N+1E.2N–117.十进制数2008等值于八进制数()。
A.3077B.3724C.2760D.4002E.373018.二叉树后序遍历是dabec,中序遍历是debac,则后序遍历是()。
A.acbedB.decabC.deabcD.cedba19.某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分查找(binary-search),在最坏的情况下,需检视()个单元。
A.1000B.10C.100D.50020.假设我们用d=(a1,a2,...,a5),表示无向图G的5个顶点的度数,下面给出的哪(些)组d值合理(B)。
A.{5,4,4,3,1}B.{4,2,2,1,1}C.{3,3,3,2,2}D.{5,4,3,2,1}二.问题求解(每题5分,共10分)1.平面上有三条平行直线,每条直线上分别有7,5,6个点,且不同直线上三个点都不在同一条直线上。
问用这些点为顶点,能组成个不同四边形。
2.完全二叉树对每个节点从上往下,从左往右编号,第i层的第j个节点的编号是。
三.阅读程序(每题8分,共32分)1.#include<stdio.h>intmain(){inta=79,b=34,c=57,d=0,e=-1;if(a<c||b<c)d=d+e;if(d+10<e)d=e+10;elsed=a-d;printf("%d\n",d);return0;}输出:。
2.#include<stdio.h>intmain(){inti,j;charstr1[]="Dir-is-stupid";charstr2[]="nice";str1[0]='B';str1[1]='a';for(i=7,j=0;j<4;i++,j++)str1[i]=str2[j];for(i=11,j=0;j<2;i++,j++)str1[i]='#';printf("%s\n",str1);return0;}输出:。
3.#include<stdio.h>main(){int?n,i;scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){while(n!=i){if(n%i==0){printf("%d*",i);n=n/i;}elsebreak;}}printf("%d",n);}输入:18输出:。
4.#include<stdio.h>int*seek(int(*pnt_row)[3]){inti=0,*pnt_col;pnt_col=*(pnt_row+1);for(;i<3;i++)if(*(*pnt_row+i)<60){pnt_col=*pnt_row;break;}return(pnt_col);}main(){staticintgrade[3][3]={{55,65,75},{65,75,85},{75,80,90}};inti,j,*pointer;for(i=0;i<3;i++){pointer=seek(grade+i);if(pointer==*(grade+i)){for(j=0;j<3;j++)printf("%d",*(pointer+j));printf("\n");}}}输出:。
四、完善程序(第一题3空,每空2分,第二题前1空,每空2分,后4空,每空5分,共28分)1.农夫用驴磨黄豆,由于磨小,每次磨的黄豆不能超过200颗,而每次磨的黄豆若多于173颗他的驴变会偷吃一颗。
每天农夫会拿出一袋黄豆,将它随意划分成K 堆,每次磨一堆。
若某堆超过200颗,农夫便会将此堆黄豆收起来,改天再磨。
问:当这天工作完成时,农夫一共磨了多少颗黄豆?输入:输入第一行有一个整数K,代表当天拿出的这袋黄豆被农夫分成K堆。
接下来的K行每行包括一个在1到200之间(包括1和200)的整数,分别表示每堆黄豆的个数。
输出:输出只包括一行,这一行只包含一个整数(长整形范围),表示在当天农夫一共磨了多少颗黄豆。
输入样例:3181169220输出样例:349程序:#include<stdio.h>main(){inti,j,n,m;m=0;⑴;for(i=1;i<=n;i++){scanf("%d",&j);if(j<=200)if(j<=173)⑵;else⑶;}Printf("%d\n",m);}2.在ByteLand上有一块地区,蕴藏了ByteLand上最珍贵的Bit矿物质。
科学家们将这块地区划分成了N×N个相同大小的单元格,并对每个单元格进行了考察研究:有的单元格中有丰富的Bit矿物质——科学家用1来标识;有的单元格蕴藏的矿物质很少——科学家用0来标识。
假设用W(i,j)和F(i’,j’)来分别表示两个单元格。
那么它们之间的距离被定义为:max(|i-i'|,|j-j'|),例如W(1,3)和F(4,2)的距离为3。
鉴于可持续发展的思想和开采能力的限制,ByteLand当局计划以一块单元格为中心,开采与中心距离不超过R的所有单元格内的矿藏。
为了选定一个合适的单元格作中心,当局希望能够预先了解:以任意一个单元格为中心时,开采量的情况。
于是,当局将一张矿藏地图交给你,上面的N×N个单元格中包含数字0或1。
你被要求根据这张矿藏地图,绘制出相应的“矿藏密度图”,分别以每块单元格为中心,计算与中心距离不超过R的所有标识为1的单元格个数。
输入:第一行有两个数字N和R(0<=R<N<=250)。
以下N行,每行N个数字。
第i+1行第j个数字为单元格(i,j)的标识——0或1。
输出:输出文件有N行,每行N个数字。
第i行第j个数字表示:与(i,j)距离不超过R的所有标识为1的单元格个数。
输入样例:511000111100100000001101000输出样例:3422145221343322222211222程序:#include<stdio.h>#include<mem.h>intn,r;longmap[250][250];longtot[250][250];voidinit(){inti,j;memset(map,0,sizeof(map)); scanf("%d%d",&n,&r);for(i=1;i<=n;i++)for(j=1;j<=n;j++)fscanf("%ld",⑴);}voidwork(){longi,j,k;memset(tot,0,sizeof(tot)); for(i=1;i<=n;i++){k=0;for(j=1;j<=n;j++){k+=map[i][j];tot[i][j]=⑵;}}}voidprint(){longi,j,minx,miny,maxx,maxy; for(i=1;i<=n;i++){for(j=1;j<=n;j++){minx=i-r;maxx=i+r;miny=j-r;maxy=j+r;if(minx<1)minx=⑶;if(maxx>n)maxx=⑷;if(miny<1)miny=1;if(maxy>n)maxy=⑸;printf("%ld",tot[maxx][maxy]-(tot[minx-1][maxy]-tot[minx-1][miny-1]+tot[maxx][miny-1])); }printf("\n");}}voidmain(){init();work();print();}\\信息学奥林匹克联赛初赛模拟试题参考答案一. 选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,多选无分,共30分)题号12345678910选择D B B C E A D D D A题号11121314151617181920选择C B A B B C E B B二.问题解答(每题5分,共10分)1.答:22502.答:2i-1+j-1三.阅读程序,并写出程序的正确运行结果:(每题8分,共32分)(1)程序的运行结果是:80(2)程序的运行结果是:Bar-is-nice##(3)程序的运行结果是:18=2*3*3(4)程序的运行结果是:556575四.根据题意,将程序补充完整1.①scanf("%d",&n)②m=m+j③m=m+j-12.①&map[i][j]②k+tot[i-1][j]③1④n⑤n。