(大湾区)-2024-初赛模拟1

CSPJ-2024-初赛模拟题 1 1 单选题 (4/4 分) 
工人 A 和工人 B 在制造厂工作。工人 A 每小时可以制造 8 个鼠标或 3 个键盘,而工人 B 每小时可以制造 5 个鼠标或 5 个键盘。在一个工作日 8 小时内,A 和 B 通过合理调配,最多可以制造出(   )个键鼠套
装。 
A    43 
B    48 
C    40 
D    46
  
2 单选题 (4/4 分) 
一个盒子里有一定数量的糖果。小雷和小星轮流拿糖果,每次可以拿
1 个、2 个,或者 3 个,拿走最后一个糖果的人获胜。如果小雷先拿,
那么在糖果总数为(   )个时小星将最终获胜。 
A    1052 
B    105 C 677 
D 大于 3 的偶数
  
3 单选题 (4/4 分) 
G 是一个有 21 条边的非连通无向图,请问 G 至少有()个顶点 
A    5 
B    6 C 7 
D 8
  
4 单选题 (4/4 分) 
下列叙述中不正确的是( )。 
A    所谓算法就是计算方法 
B    程序是算法的一种实现方式 
C    算法有可能是不会终止的程序 
D    算法设计需要考虑算法的执行时间
  
5 单选题 (4/4 分) 
在网站链接 https://www.baidu.com 中,.com 被称作(  ) 
A 传输语言 B 顶级域名 C 编码格式 
D 传输协议 
  
6 单选题 (4/4 分) 
一个篮子中有 45 个苹果、40 个橙子和 42 个梨子。一个人每次从篮子中随机抽取一个水果,至少经过(  )次后,篮子中某种水果的数量才
可能不足 10 个。 
A 31 B 28 C 25 
D 35 
  
7 单选题 (4/4 分) 
两位同学讨论关于太阳能的问题。小安认为太阳能是不实用的,因为天气常常阴雨绵绵,经常无法获得太阳能。小星认为太阳能是实用
的,因为太阳能是一种清洁的能源。 
A    小安提出的观点;小星提出的事实 
B    小安和小星提出的都是事实 
C    小安提出的都是事实;小星提出的是观点 
D    小安和小星提出的都是观点 
  
8 单选题 (4/4 分) 
下列编程语言中属于解释性语言的是(   )。 
A    C++ 
B    Pascal 
C    Python 
D    C 
  
9 单选题 (4/4 分)与十进制数 63.75 相对应的 16 进制数是(   )。 
A    3F.C 
B    3E.A 
C    40.2 
D    3C.F 
  
10 单选题 (4/4 分) 
以下哪个选项不是结构化程序设计方法的特点(  )? 
A    模块化 
B    面向对象 
C    顺序性 
D    自顶向下 
  
11 单选题 (4/4 分) 
设循环队列中,数组的下标范围为 0∼m−1,头尾指针分别为 f 和 r。
若当前队列中有 n 个元素,则下列等式中成立的是(   )。 
A    r-f=n 
B    r-f+1=n 
C    (r-f+1)%m=n 
D    (r-f+m)%m=n 
  
12 单选题 (4/4 分)设栈 S 的初始状态为空,元素 a,b,c,d,e,f 依次入栈 S,出栈的序列为 b,d,c,f,e,a,则栈 S 的容量至少应该是(   )。 
A    3 
B    4 
C    5 
D    6 
  
13 单选题 (4/4 分)已知二叉树的中序遍历为 DEGHFCABI,后序遍历为 HGFEDCIBA,则该二叉树的前序遍历为( )。 
A    ABCDEFCHI. 
B    ACDEFHGBI 
C    ADCEFGHBI 
D    ACDEFGHBI  
 
  
14 单选题 (4/4 分)前缀表达式+4×2+5(空格)12 的值是(   )。 
A    24 
B    26 
C    38 
D    13 
  
15 单选题 (4/4 分) 
有 75 个人围成一圈,从第一个人开始报数,每次数到第 4 个人出列。
最后一个出列的人在初始队列中的编号是(   )。 
A    17 
B    26 
C    52 
D    73 
  
16 单选题(4/4 分)     
union U1 {         int n;         char s[11];         double d; 
    };     union U2 {         int n;         char s[5];         double d; 
}; 
联合体U1和U2分别占()字节和()字节 
A    11 8 
B    12 16 
C    16 16 
D    16 8
  
2023CSP-J 初赛模测 1-阅读 1 阅读以下代码回答问题。其中 n,m,a[i]≤10000。

 
01    #include <bits/stdc++.h> 
02    using namespace std; 
03    typedef long long ll; 
04    int main() { 
05    int m, n; 
06    cin >> m >> n; 
07    vector<int> a(m); 
08    for (int i = 0; i < m; ++i) cin >> a[i]; 
09    sort(a.begin(), a.end()); 
10    double ans = 1e18; 
11    for (int i = 0; i + n <= m; ++i) { 
12    double sum = 0; 
13    for (int j = i; j < i + n; ++j) sum += a[j]; 
14    double D = 0; 
15    for (int j = i; j < i + n; ++j) 
16    D += (a[j] - sum / n) * (a[j] - sum / n); 
17    ans = min(ans, D); 
18    } 
19    cout << ll(floor(ans)) << endl; 
20    return 0; 
21    } 
  
  
17 单选题 (3/3 分)将第 7 行替换成 int a[m];,程序行为不变。(  ) 
A    正确 
B    错误 
  
18 单选题 (3/3 分) 
由于 m、n、a[i]的数值都不大,且都为整数,所以将 12 行的 double 改成 ll,程序行为不变。(  ) 
A    正确 
B    错误 
  
19 单选题 (3/3 分) 
程序总是输出一个整数。(  ) 
A    正确 
B    错误 
  
20 单选题 (3/3 分) 
当输入为 
5 3 
1 2 3 4 5 
时,输出为“2”。(  ) 
A    正确 
B    错误 
  
21 单选题 (3/3 分)该算法最准确的时间复杂度分析结果为 O(mlog m+mn)。 
A    正确 
B    错误 
  
22 单选题 (6/6 分) 
当输入为 
10 3 
14 1 10 11 22 16 3 23 8 17 
时,输出为(   )。 
A    4 
B    36 
C    125 
D    90 
  
2023CSP-J 初赛模测 1-阅读 2 阅读以下代码回答问题。其中 T≤1000。 
01    #include<bits/stdc++.h> 
02    using namespace std; 
03    #define int long long 
04    const int N=1005; 
05    const int mod=1e9+7; 
06    int T,n,f[N],sum[N]; 
07    signed main(){ 
08    for(int i=1;i<N;i++){ 
09    while(++f[i]) if(i%f[i]) break; 
10    sum[i]=(sum[i-1]+f[i])%mod; 
11    } 
12    scanf("%lld",&T); 
13    while(T--){ 
14    scanf("%lld",&n); 
15    printf("%lld\n",sum[n]); 
16    } 
17    return 0; 
18    } 
  
  
23 单选题 (3/3 分)第 7 行的 signed 替换成 unsigned,对程序没什么影响。(  ) 
A    正确 
B    错误 
  
24 单选题 (3/3 分)当输入的 n 为“10”时,f[10] = 3。(  ) 
A    正确 
B    错误 
  
25 单选题 (3/3 分) n 越大,f[n]和 sum[n]的值越接近。(  ) 
A    正确 
B    错误 
  
26 单选题 (3/3 分) 
第 9 行的“%”替换成“/”,可以加快程序的执行效率。(  ) 
A    正确 
B    错误 
  
27 单选题 (6/6 分)当输入为“1 10”时,输出为(  )。 
A 21 B 36 
C    26 
D    42 
  
28 单选题 (6/6 分) 
当输入为“2 15 30”时,输出分别为(  )。 
A    “41”和“82” 
B    “40”和“82” 
C    “52”和“102” 
D    “56”和“100” 
  
2023CSP-J 初赛模测 1-阅读 3 阅读以下代码回答问题。其中 n,m≤20000。 
    01    #include<bits/stdc++.h> 
02    using namespace std; 
03    struct num {int a,b;}; 
04    void fun(struct num s[], int n) { 
05    int index,j,k; 
    06     struct num temp; 
    07     for(k=0; k<n-1; k++) { 
    08          index = k; 
    09          for(j=k+1; j<n; j++) 
    10               if(s[j].b<s[index].b) index=j; 
    11          if(index!=k) { 
    12               temp=s[index]; 
    13               s[index]=s[k]; 
    14               s[k]=temp; 
    15          }     
    16     }         
    17    } 
18    int main() { 
19    int count,i,k,m,n,no; 
20    struct num s[100]; 
21    cin>>n>>m>>k; 
22    for(i=0; i<n; i++) { 
    23          s[i].a=i+1; 
    24          s[i].b=0; 
    25     }     
    26     i=0; 
    27     count=no=0; 
    28     while(no<n) { 
    29          if(s[i].b==0) 
    30               count++; 
    31          if (count==m) { 
    32               no++; 
    33               s[i].b=no; 
    34               count=0; 
    35          }     
    36          i++; 
    37          if(i==n) 
    38               i=0; 
    39          } 
    40     fun(s,n); 
    41     printf ("%d:%d\n",s[k-1].b,s[k-1].a); 
    42 
43 }     return 0; 
  
  
29 单选题 (3/3 分)若输入为:0 0 0 时,程序运行会出错。( ) 
A    正确  
B    错误 
  
30 单选题 (3/3 分)若输入为:1 2 3 时,则输出为 3:1。( ) 
A    正确  
B    错误 
  
31 单选题 (3/3 分)若把 11 行的“index!=k”改为 1,不会影响程序运行结果。( )  
A    正确 
B    错误 
  
32 单选题 (3/3 分) 
若去掉 37 和 38 行,不会影响程序运行结果。( ) 
A    正确 
B    错误 
  
33 单选题 (3/3 分)程序运行时,输入 5 4 3 ,输出( )。 
A 3:5  
B 2:3 
C    1:2 
D    4:1 
  
34 单选题 (7/7 分)程序运行时,输入 7 5 2,输出( )。 
A    1:5 
B    6:1 
C    2:3  
D    2:4 
 
 
 
 
35 单选题 (7/7 分) 
当输入为 
3 6 
1 1 2 2 2 3 
1 22 1 3     1 
1 3    1 
2 3    1 

时,输出是(  )。 
A    No Yes No 
B    Yes No No 
C    No No Yes 答案 
D    Yes Yes No 
 
  
  
2023CSP-J 初赛模测 1-完善 1 
(枚举正方形)给定 n 个二维平面点,选择一个与坐标轴平行的边长为 L 的正方形,使得内部点的数量最大。 
试补全枚举程序。 
01    #include <cstdio> 
02    #include <algorithm> 
03    using namespace std; 
04    const int N = 100 + 5; 
05    const int inf = 0x3f3f3f3f; 
06    struct node{ 
07    int x; 
08    int y; 
09    } e[N]; 
10    int main(){ 
11    int n, L, ans = 0; 
12    scanf("%d%d", &n, &L); 
13    int a = inf, b = inf, c = -inf, d = -inf; 
14    for (int i = 1; i <= n; i++){ 
15    scanf("%d%d", &e[i].x, &e[i].y); 
16    ① 
17    ② 
18    } 
19    for (int i = a; i <= ③; i++) 
20    for (int j = b; j <= ④; j++){ 
21    int nowAns = 0; 
22    for (int k = 1; k <= n; k++) 
23    if (⑤) 
24    nowAns++; 
25    ans = max(ans, nowAns); 
26    } 
27    printf("%d\n", ans); 
28    return 0; 
29    } 
  
  
36 单选题 (6/6 分) 
① 处应填(   ) 
A    a=max(a,e[i].x), b=max(b,e[i].y); 
B    a=max(c,e[i].x), b=max(d,e[i].y); 
C    c=min(c,e[i].x), d=min(d,e[i].y); 
D    c=max(c,e[i].x), d=max(d,e[i].y); 
  
37 单选题 (6/6 分) 
② 处应填(   ) 
A    a=max(a,e[i].x), b=max(b,e[i].y); 
B    a=min(a,e[i].x), b=min(b,e[i].y); 
C    c=max(c,e[i].x), d=min(d,e[i].y); 
D    c=min(c,e[i].x), d=min(d,e[i].y); 
  
38 单选题 (6/6 分) 
③ 处应填(   ) 
A    a+L 
B    c 
C    d 
D    b+L 
  
39 单选题 (6/6 分) 
④ 处应填(   ) 
A    b+L 
B    c 
C    d 
D    a+L 
  
40 单选题 (6/6 分) 
⑤ 处应填(   ) 
A    e[k].x>=i && e[k].x<=i+L && e[k].y>=j && e[k].y<=j+L 
B    e[k].x>=i && e[k].x<=j+L && e[k].y>=j && e[k].y<=i+L 
C    e[k].x>=i && e[k].x<=L && e[k].y>=j && e[k].y<=L 
D    e[k].x>=i && e[k].x<=j && e[k].y>=j && e[k].y<=i 
  
2023CSP-J 初赛模测 1-完善 2 
(区间重叠)给定 n 个左闭右开的区间,求最多有多少个区间互相重
叠。 
试补全程序。 
01    #include <bits/stdc++.h> 
02    using namespace std; 
03    int main() 
04    { 
05    int n; 
06    cin >> n; 
07    vector<int> s(n), t(n), id(n); 
08    for (int i = 0; i < n; ++i) 
09    cin >> s[i] >> t[i]; 
10    for (int i = 0; i < n; ++i) id[i] = i; 
11    sort(id.begin(), id.end(), [&](int x, int y) { return s[x]  < s[y]; }); 
     //使用匿名函数(lambda表达式)简化代码 
12    int k = 0; 
13    vector<int> f(n, -1);  
14    for (int i = 0; i < n; ++i) { 
15    int ok = 0; 
16    for (int j = 0; j < ①; ++j) { 
17    if (f[j] <= ②) { 
18    ok = 1; 
19    f[j] = ③; 
20    break; 
21    } 
22    } 
23    if (!ok) { 
24    f[k] = ④; 
25    ⑤; 
26    } 
27    } 
28    cout << k << endl; 
29    return 0; 
30    } 
  
  
41 单选题 (6/6 分) 
① 处应填(   ) 
A    n 
B    i 
C    id[i] 
D    k 
  
42 单选题 (6/6 分) 
② 处应填(   ) 
A    s[id[i]] 
B    f[i] 
C    t[id[i]] 
D    f[k] 
  
43 单选题 (6/6 分) 
③ 处应填(   ) 
A    f[k] 
B    f[i] 
C    t[id[i]] 
D    s[id[i]] 
  
 
 
44 单选题 (6/6 分) 
④ 处应填(   ) 
A    k 
B    s[id[i]] 
C    t[id[i]] 
D    id[i] 
  
45 单选题 (6/6 分) 
⑤ 处应填(   ) 
A    f[k]++ 
B    k++ 
C    f[j]++ D id[i]++ 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengddzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值