导航菜单

CSP

CSP-J 2024 入门级 第一轮试题(初赛)答案及解析 一、单项选择题 32 位 int 类型的存储范围是( ) A. -2147483647 ~ +2147483647 B. -2147483647 ~ +2147483648 C. -2147483648 ~ +2147483647 D. -2147483648 ~ +2147483648

答:C int是32位有符号整型, 当机器数为0111 1111 1111 1111 1111 1111 1111 1111时,表示的数值最大,为2 31− 1 2^{31}-1231−1 当机器数为1000 0000 0000 0000 0000 0000 0000 0000时,表示的数值最小,为 −2 31-2^{31}−231 因此int可以表示的数值范围为 −2 31∼2 31− 1 -2^{31}\sim 2^{31}-1−231∼231−1,算出来的结果是 − 2147483648 ∼ 2147483647 -2147483648\sim 2147483647−2147483648∼2147483647,选C。

计算 ( 14 8− 1010 2) ∗D 16− 1101 2(14_8 − 1010_2)∗D_{16} − 1101_2(148​−10102​)∗D16​−11012​的结果,并选择答案的十进制值:( ) A.13 B.14 C.15 D.16

答:A 将数字都转为二进制。每位8进制数字转为3位二进制数字,每位16进制数字转为4位二进制数字。 14 8= 1100 214_8=1100_2148​=11002​,D 16= 1101 2D_{16}=1101_2D16​=11012​ 所以原式为 ( 1100 − 1010 ) ∗ 1101 − 1101 = ( 1100 − 1010 − 1 ) ∗ 1101 = ( 10 − 1 ) ∗ 1101 = 1101 (1100-1010)*1101-1101=(1100-1010-1)*1101=(10-1)*1101=1101(1100−1010)∗1101−1101=(1100−1010−1)∗1101=(10−1)∗1101=1101 1101 2=2 3+2 2+2 0= 8 + 4 + 1 = 13 1101_2=2^3+2^2+2^0=8+4+1=1311012​=23+22+20=8+4+1=13,选A。

某公司有 10 名员工,分为 3 个部门:A 部门有 4 名员工,B 部门有 3 名员工、C 部门有 3 名员工。现需要从这 10 名员工中选出 4 名组成一个工作组,且每个部门至少要有 1 人。问有多少种选择方式?( ) A.120 B.126 C.132 D.238

答:B 先分类,再分步。 A部门出2人,B部门出1人,C部门出1人,情况数为: C ( 4 , 2 ) C ( 3 , 1 ) C ( 3 , 1 ) = 6 ∗ 3 ∗ 3 = 54 C(4,2)C(3,1)C(3,1)=6*3*3=54C(4,2)C(3,1)C(3,1)=6∗3∗3=54 A部门出1人,B部门出2人,C部门出1人,情况数为: C ( 4 , 1 ) C ( 3 , 2 ) C ( 3 , 1 ) = 4 ∗ 3 ∗ 3 = 36 C(4,1)C(3,2)C(3,1)=4*3*3=36C(4,1)C(3,2)C(3,1)=4∗3∗3=36 A部门出1人,B部门出1人,C部门出2人,情况数为: C ( 4 , 1 ) C ( 3 , 1 ) C ( 3 , 2 ) = 4 ∗ 3 ∗ 3 = 36 C(4,1)C(3,1)C(3,2)=4*3*3=36C(4,1)C(3,1)C(3,2)=4∗3∗3=36 共有 54 + 36 + 36 = 126 54+36+36=12654+36+36=126种情况

以下哪个序列对应数组 0 至 8 的 4 位二进制格雷码(Gray code)? A.0000,0001,0011,0010,0110,0111,0101,1000 B.0000,0001,0011,0010,0110,0111,0100,0101 C.0000,0001,0011,0010,0100,0101,0111,0110 D.0000,0001,0011,0010,0110,0111,0101,0100

答:D 格雷码的任意两个相邻的数码只有一位二进制数不同,根据这一特性,使用排除法可以得到选项D。 生成格雷码的方法如下:

1位格雷码有0与1(n+1)位格雷码中的前2n2^n 2n个码字等于n位格雷码的码字,按顺序书写,加前缀0(n+1)位格雷码中的后2n2^n 2n个码字等于n位格雷码的码字,按逆序书写,加前缀1格雷码位数格雷码10, 1200, 01, 11, 103000, 001, 011, 010, 110, 111, 101, 10040000, 0001, 0011, 0010, 0110, 0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010, 1011, 1001, 1000 记 1KB 为 1024 字节(byte),1MB 为 1024KB,那么 1MB 是多少二进制位(bit)? A.1000000 B.1048576 C.8000000 D.8388608

答:D 1字节占用8二进制位,也就是 1 B = 8 b 1B=8b1B=8b, 1 M B = 1024 K B = 1024 ∗ 1024 B = 8 ∗ 1024 ∗ 1024 b = 8388608 b 1MB=1024KB=1024*1024B=8*1024*1024b=8388608b1MB=1024KB=1024∗1024B=8∗1024∗1024b=8388608b 如想偷懒,可以只算结果的个位数字,也就是 8 ∗ 1024 ∗ 1024 % 10 = 8 ∗ ( 1024 % 10) 2% 10 = 8 ∗ (4 2% 10 ) = 8 ∗ 6 % 10 = 8 8*1024*1024\%10=8*(1024\%10)^2\%10=8*(4^2\%10)=8*6\%10=88∗1024∗1024%10=8∗(1024%10)2%10=8∗(42%10)=8∗6%10=8 因此结果个位为8,选D。

以下哪个不是 C++中的基本数据类型? A. int B. float C. struct D. char

答:C struct 不是基本数据类型,struct定义出的结构体(或者叫类)是复合数据类型。其余的int, float, char都是C++的基本数据类型。

以下哪个不是 C++中的循环语句? A. for B. while C. do-while D. repeat-untill

答:D C++中有for、while和do…while循环。 Repeat-untill 是 Pascal、lua 等语言中的直到循环语句,C++并不支持。

在 C/C++中,(char)(‘a’+13)与下面的哪一个值相等( ) A. ’m’ B. ‘n’ C. ‘z’ D. ‘3’

答:B 第1个字母’a’的ASCII码为97,也就是’a’+0 第2个字母’b’的ASCII码为98,也就是’a’+1 … 第i个字母的ASCII码为’a’+i-1 ‘a’+13为第14个字母的ASCII码,第14个字母为’n’,选B。

假设有序表中有 1000 个元素,则用二分法查找元素 x 最多需要比较( )次 A.25 B.10 C.7 D.1

答:B n个元素的有序序列进行二分查找的比较次数为 ⌊ l og 2n ⌋ + 1 \lfloor log_2n \rfloor +1⌊log2​n⌋+1(二分查找最大比较次数证明) 本题中n=1000,代入公式得: ⌊ log⁡ 21000 ⌋ + 1 \lfloor \log_21000 \rfloor +1⌊log2​1000⌋+1 已知2 9= 512 2^9=51229=512,2 10= 1024 2^{10}=1024210=1024,所以2 9< 1000 <2 102^9

相关推荐: