《Noip2022初赛提高组C试题及答案(完整版).doc》由会员分享,可在线阅读,更多相关《Noip2022初赛提高组C试题及答案(完整版).doc(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Noip2022初赛进步组C试题及答案完好版Noip20_初赛进步组试题及答案完好版进步组C语言试题 一、单项选择题每题1.5分,共22.5分。1.以下哪个是面向对象的高级语言( ).A.汇编语言 B.C+ C.FORTRAN D.Basic 2.1TB代表的字节数量是( ).A.2的10次方 B.2的20次方 C.2的30次方 D.2的40次方 3.二进制数00100100和00001的和是( ).A.00000 B.000100 C.01000 D.00111001 4.TCP协议属于哪一层协议( ).A.应用层 B.传输层 C.网络层 D.数据链路层 5.以下几个32位IP地址中,书写错
2、误的选项是( ).A.162.105.128.27 B.192.168.0.1 C.256.256.129.1 D.10.0.0.1 6.在无向图中,所有定点的度数之和是边数的( )倍.A.0.5 B.1 C.2 D.4 7.对长度位n的有序单链表,假设检索每个元素的概率相等,那么顺序检索到表中任一元素的平均检索长度为( ).A.n/2 B.(n+1)/2 C.(n-1)/2 D.n/4 8.编译器的主要功能是( ).A.将一种高级语言翻译成另一种高级语言 B.将程序翻译成指令 C.将低级语言翻译成高级语言 D.将程序重新组合 9.二进制数111.所对应的十进制数是( ).A.5.625 B.
3、5.5 C.6.125 D.7.625 10.假设有变量 int a, float _, y, 且 a=7, _=2.5, y=4.7, 那么表达式 _+a3_(int)(_+y)2/4的值大约是( ).A.2.500000 B.2.750000 C.3.500000 D.0.000000 11.有以下构造体说明和变量定义,如下图,指针p、q、r分别指向一个链表中的三个续结点。struct node data ne_t data ne_t data ne_t int data; struct node _ne_t; p q r _p,_q,_r; 现要将q和r所指结点的先后位置交换,同时要保持
4、链表的连续,以下程序段中错误的选项是( ).A.q-ne_t = r-ne_t; p- ne_t = r; r-ne_t = q; B.p-ne_t = r; q-ne_t = r-ne_t; r-ne_t = q; C.q-ne_t = r-ne_t; r-ne_t = q; p-ne_t = r; D.r-ne_t = q; q-ne_t = r-ne_t; p-ne_t = r; 12.同时查找2n 个数中的最大值和最小值,最少比拟次数为( ).A.3(n-2)/2 B.4n-2 C.3n-2 D.2n-2 13.设G是有6个结点的完全图,要得到一颗生成树,需要从G中删去( )条边.A.
5、6 B.9 C.10 D.15 14.以下时间复杂度不是O(n2)的排序方法是( ).A.插入排序 B.归并排序 C.冒泡排序 D.选择排序 15.以下程序实现了找第二小元素的算法。输入时n个不等的数构成的数组S,输出S中第二小的数SecondMin。在最坏的情况下,该算法需要做( )次比拟。if (S1 int main int a,b,I,tot,c1,c2; scanf(“dd”, a, d); tot = 0; for (i=a; i Int fun(int n, int minNum, int ma_Num) int tot, i; if (n=0) retuen 1; tot=0;
6、 for(i=minNum; i #include const int SIZE=100; const int LENGTH=25; / strcmp(a,b) 0:a的字典序大于b int main char dictSIZELENGTH+1; int rankSIZE; int indSIZE; int i,j,n,tmp; scanf(“d”,n); for (i=1;i0) tmp=indj; indj=indj+1; indj+1=tmp; for(i=1;i const int SIZE=100; int aliveSIZE; int n; int ne_t(int num) do
7、 num+; if(numn) num=1; while (alivenum=0); return num; int main int m,i,j,num; scanf(“dd”,n,m); for(i=1;i consr int SIZE=100; int stack1SIZE,stack2SIZE; int 1,2; int n,m,i,j; void clearStack int I; for(i=1;i1-1) 2- -; (4) ; 1+; clearstack; printf(“dn”,stack1 (5) ); return 0; 2.(最大矩阵和)给出M行N列的整数矩阵,就最大
8、的子矩阵和子矩阵不能为空。输入第一行包含两个整数M和N,即矩阵的行数和列数。之后M行,每行N个整数,描绘整个矩阵。程序最终输出最大的子矩阵和。第一空2分,其余3分,共14分#include const int SIZE=100; int matri_SIZE+1SIZE+1; int rowsumSIZE+1SIZE+1; /rowsumij记录第i行前j个数的和 int m,n,i,j,first,last,area,ans; int main scanf(“d d”,m,n); for(i=1;ians) ans=area; if(area0) area=0; printf(“dn”,an
9、s); return 0; Noip20_初赛进步组C语言试题参考答案 一、 单项选择题共15题,每题1.5分,共计22.5分1 2 3 4 5 6 7 8 B D D B C C B B 9 10 11 12 13 14 15 D A D C C B C 二、 不定项选择题共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,没有局部分1 2 3 4 5 AB BCD ABCDE AC BD 三、问题求解共2题,每题5分,共计10分;每题全部答对得5分,没有局部分1._102 _ 2._15 _四、阅读程序写结果共4题,每题8分,共计32分1._8 _2._20 _3._2 5 6 3 4 7 1 _4._3 6 9 1 5 10 4 11 8 2 7 _五、完善程序共计28分1.(1) _n _2.5分(2) _0_2.5分(3) _stack22=stack11 _3分(4) _stack11=stack22 _3分(5) _1-1 _3分2.(1) _11 _2分(2) _rowsumi0=0_3分(3) _rowsumij-1 + matri_ij _3分(4) _area=0 _3分(5) _rowsumilast-rowsumifirst-1 _3分第 7 页 共 7 页
限制150内