1 B
分析:这题NOIP也考过类似的题多次。解释性语言如Python, Perl, Matlab,运行速度较慢。
2 A
分析:FTP的全称为File Transfer Protocol,文件传输协议。
3 A
4 D
分析:4和6分别代表第4代和第6代。目前用的基本上都是IPv4,可表示为X:X:X:X,比如192.168.1.101,由四个字节组成,32位。IPv6由16个字节组成,128位,可表示为X:X:X:X:X:X:X:X,当然IPV6还有另两种表示方法。
5 D
分析:格式化就是把包括有用的数据和病毒数据在内的所有数据都清除掉。
6 C
7 C
分析:十六进制的10等于十进制的16,十六进制的0.C等于C/10 = 十进制的12/16=0.75
8 D
分析:int d=c=b中,c没有定义,不能直接使用。可改成
int c;
int d = c = b;
9 B
分析:1MB = 2^10kB = 2^20B = 2^23bit
10 C
分析:2e-1是科学计数法,代表2*10^(-1) = 0.2
11 B
分析:本题考察C++函数重载。函数重载必须符合下列两个条件的至少一个:
(1)函数的参数个数不同。
(2)函数的参数类型不同或者参数类型顺序不同,
12 B
13 C
分析:这题NOIP考过多次。
C中,若要求值为true,则根据后两个条件要求P=true, Q = true, 这样第一个条件(!P || !Q) = (false || false) = false,导致最终值仍为false。所以C的结果恒为false。
14 B
分析:0x7f + 0x10d = 0x18c,化为十进制则为16^2 + 8 * 16 + 12 = 396
15 C
分析:new关键字是用来开辟内存的,需要配合指针使用。
16 D
分析:快速排序不稳定,并且中间会多次比较。
17 A
分析:这里列出了四种交换两个数的方法。并且使用了引用。但这题的考察重点是for中的n+1-i >= i,注意这时有个等于号。会出现中间那个数与自己交换的情况。
比如{1, 2, 3, 4, 5},需要3次交换:1和5换,2和4换,3和3换。问题就出在3和3换。3和3是同一个元素。
对于B答案。当x和y一样时,x^=y会导致x = 0,这样y = x = 0。所以用B的方法交换,会得到{5, 4, 0, 2, 1}。
对于C答案,当x和y一样时,x+=y得到x变为原来的2倍,此时y仍然等于x,y = x - y = 0,x = x - y = 0 - 0 = 0,所以交换完后得到{5,4,0,2,1}。
对于D答案,当x和y一样时,x *= y,得到的x为原来的平方,此时y仍然等于x,y= x / y = 1,x = x / y = 1 / 1 = 1,所以交换完后得到{5,4,1,2,1}。
18 D
分析:++a % b = 6 % 2 = 0。
19 C
分析:浮点数和整数之间不能求余数。
20 B
分析:使用memset需要包含头文件memory.h或string.h或cstring,而不是包含string。
答案:-3
分析:浮点数无论是正还是负,化为整数都是直接把小数去掉。不用考虑四舍五入。
答案:40
每个整型元素占4个字节,10个整型元素占40个字节。
答案:25
考察字符在ASCII码表中排序方式。小写字母和大写字母都是按字典序排列的。z和a相差了25个数,所以答案为25。或者z的ASCII码值为122,a的ASCII码值为97,122-97=25。
答案:1111
分析:5 * 3 = 15,化成二进制即为1111。
答案:397
分析:除了最高位,每位十六进制化成二进制为4位,十六进制的最高位为1时,化成二进制也是1,这种情况下二进制总共有1 + 99 * 4 = 397位。
答案:1/3,6
分析:
(1)给这五对夫妻从1到10编号。假如1号和2号是夫妻,3号和4号是夫妻,5号和6号是夫妻,7号和8号是夫妻,9号和10号是夫妻。从10个人中选3个人有C(10, 3) = 120种选法。选一对夫妻的方法有5种,对于这5种中的每种情况,剩余一人可从剩下的8个人里面选,所以选三人包含一对夫妻的方法有5 * 8 = 40种。40 / 120 = 1 / 3。
(2)选五个人可能出现没有选中夫妻的情况,再选一个人的话,至少会有一对是夫妻。
答案:bc
分析:
当有三个连续的0或1时,就可以被抓出。
b答案可以从右往左刷:0000000000 --> 0000001110 --> 0000000110 --> 0001110110 --> 0000010110 --> 0111010110
c答案也可以从右往左刷:0000000000 --> 0000001110 --> 0000000010 --> 0000111010 --> 0000001010 --> 0011101010 --> 0001101010
答案:25,4
分析:
第一空,如左图所示,61 + 34 + C - 2 * 10 = 100得C = 25
第二空,如右图所示,61 + 34 + 29 - (x + y + z) - 2 * 10 = 100得x + y + z = 4
答案:b!=c
分析:这题是考察“”与“=”的区别。判断语句里正确的写法是“”,这个程序故意写成了“=”,变成了赋值。if(a = b)是把b的值赋给a,再判断a是否为真。if(b = c)同理。
(a)答案:1 2
分析:两个if决定了先输出b,再输出空格。最后再输出a。
(b)答案:w
分析:第二个for求的是每个字符出现的次数。a[‘x’] = 2, a[‘y’] = 2, a[‘z’] = 1, a[‘w’] = 1。第三个for,是从字符串的最后一个字符倒着往前看,碰到第一个出现次数为1的字符,就打印出来。所以是w。
(c)答案:15
分析:这题是求1~100之间,有多少个数对7求余数等于1。符合的数为1,8,15,……,99。根据等差数列求和公式99 = 1 + (n - 1) * 7 得n = 15。
(d)答案:35
分析:这题参考了2018年NOIP普及第二大题的第3题。做法是一样的。
m = -1 | m = 0 | m = 1 | m = 2 | m = 3 | m = 4 | |
---|---|---|---|---|---|---|
n = 0 | 0 | 1 | 0 | 0 | 0 | 0 |
n = 1 | 0 | 1 | 1 | 0 | 0 | 0 |
n = 2 | 0 | 1 | 2 | 1 | 0 | 0 |
n = 3 | 0 | 1 | 3 | 3 | 1 | 0 |
n = 4 | 0 | 1 | 4 | 6 | 4 | 1 |
n = 5 | 0 | 1 | 5 | 10 | 10 | 5 |
n = 6 | 0 | 1 | 6 | 15 | 20 | 15 |
n = 7 | 0 | 1 | 7 | 21 | 35 | 35 |
答案:
(1)0
(2)b - a
分析:这道题是用while循环求斐波那契数列,除此之外,还可以用for或递归来求。需要注意的是第二空,用了while,a = b - a,这是让a向右挪动一个位置。
答案:
(1)a[k]
(2)k+1, R
(3)L, k - 1
分析:这道题就是考二分法。实际上题目直接说明了是二分法。
了解少儿编程、信息学竞赛请加微信307591841或QQ群581357582