全国入门组 CSP-J 初赛模拟试题 (7)
一、单项选择题 (共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1) 以下属于系统软件的是:( )。




查看答案
2) ( )在国际电信标准组织3GPP RAN第78次全体会议上,5G NR首发 版本正式发布,这是全球第一个可商用部署的5G标准。




查看答案
3) 如果用一个字节来表示整数,最高位用作符号位,其他位表示数值。例如00000001表示 +1,10000010表示-1,试问这样表示法的整数A的范围应该是( )。




查看答案
4) 下列属于网络模型的名称是( )。




查看答案
5) 在C++中,(-7)%(-5)等于( )。




查看答案
6) 学号为1到30的小朋友顺时针排成一圈,从1号小朋友开始顺时针报数,从数字1开始数下去,1,2,3,...,28,29,30,31,32,,一圈又一圈,问当数到数字n,所在的小朋友的学 号为多少? ( )。




查看答案
7) 一棵完全二叉树的结点总数为41,其叶结点数为( )。




查看答案
8) 给出3种排序:插人排序、冒泡排序、选择排序。这3种排序的时间代价分别是( )。




查看答案
9) 请给以下四个事件发生的时间排序( )。 1.举办第一次NOIP 2.举办第一次NOI网络同步赛 3.NOIP提高组由四题改为三题 4.举办第一次APIO




查看答案
10) 以下在OSI模型中属于 TCP/IP 模型中的应用层的是( )。




查看答案
11) 以下关于图的不正确说法是( )。




查看答案
12) 6个人分乘两辆不同的汽车,每辆车最多坐4人,则不同的乘车方法数为( )。




查看答案
13) 为了实现两数交换,代码如下: void swapAB(int &a,int &b) { ( ); b=a-b;a=a-b;} 则空格内要填人的语句是( )。




查看答案
14) 某数列有10000个各不相同的数,由低到高按序排列,现要对该数列进行二分法检索,在 最坏的情况下,需要检索( )个数据。




查看答案
15) 以下简称和全称不对应的是( )。




查看答案
二、阅读程序 (程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题1.5分,选择题4分,共计40分)
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1, s2;
cin>>s1;cin>>s2;
int cnt=0;
for (int i=0; i<s1.size(); i++)
{
for (int j=0; j<s2.size(); j++)
if(s1[i]== s2[j]) cnt++;
}
cout<<cnt;
}
16) 输入必须全要是字母,否则无法被识别。( )

查看答案
17) 将10行的j全部换成i是有问题的。( )

查看答案
18) 本程序的功能统计两个字符串的最长公共子序列长度。( )

查看答案
19) 本程序的时间复杂度为O(n^2)。( )

查看答案
20) 若输入的两个字符串长度均为12,那么输出最大为( )




查看答案
21) 若s1长度为4,输出为6,s2的长度至少为( )




查看答案
#include <bits/stdc++.h>
using namespace std;
const int MAXN= 1e5;
int a[MAXN],b[MAXN];
int main(){
int n,m,x,y;
cin>>n>>m;
for (int i=1; i<= n; i++)
{
cin>>x>>y;
a[x]++;
a[y+1]--;
}
int cnt = 0, ans= 0;
for (int i=0; i<=m; i++)
{
cnt += a[i];
ans += cnt;
}
cout << ans;
}
//注:输入流中 1<=x<=y<=m
22) 输入的x和y可以是全体整数。( )

查看答案
23) 将14行的清零过程除去没有问题。( )

查看答案
24) 将17行与18行交换位置不会影响最终结果。( )

查看答案
25) 将11行的x改成x-1并把12行的y+1改成y不会影响最终结果。( )

查看答案
26) 现在已知输入的n与m,则答案的极差为( )




查看答案
27) 在(1)的基础上,除去“注”中的条件,则答案的极差为( )




查看答案
#include <bits/stdc++.h>
using namespace std;
int a[6];
int change(int a){a++;}
int change1(int &a){a++;}
int main(){
int c=1;for(int i=1; i<=5; i++)a[i]=i*3;
int *b=&a[1];
change(*b); cout<<*b<<endl;cout<<a[1]<< endl;
*b++; cout<<*b<<endl; cout<<a[1]<<endl;
change1(*b); cout<<*b<<endl; cout<<a[1]<<endl;
*b=c;
change(c); cout<<*b<<endl; cout<<c<<endl;
change1(c); cout<<*b<<endl; cout<<c<<endl;
return 0;
}
28) 将第7行中int换为long long后程序依然能通过编译。( )

查看答案
29) change与changel两个函数等价。( )

查看答案
30) 将第12行换为 b=&c;输出值不变。( )

查看答案
31) 将第8行换为int *b=a+1;输出值不变。( )

查看答案
32) 输出结果的最大值是( )




查看答案
33) 输出结果的乘积是( )




查看答案
三、完善程序 (单选题,每题3分,共计30分)
给出N个整数,要统计每个数前面有多少比它大的数字。比如有5个数的数列:2 5 1 3 4,则第1个数2之前有0个数比它大;第2个数5之前有0个数比它大;第3个数1之前2个数比它大;第4个数3之前有1个数比它大;第5个数4之前有1个数比它大。
数据范围:每个数范围[0..200],N<=10^5
#include <iostream>
using namespace std;
int d[100002];
int c[1300];
int main() {
int n, ans,x;
cin>>n;
for (int i=0; i<n; i++)
___(1)___ ;
for (int i=0; i<n; i++) {
___(2)___ ;
for(int j=___(3)___; j<200; j++)
___(4)___;
cout<<ans<<" ";
___(5)___;
}
cout<<endl;
return 0;
}
34) ①处应填( )




查看答案
35) ②处应填( )




查看答案
36) ③处应填( )




查看答案
37) ④处应填( )




查看答案
38) ⑤处应填( )




查看答案
给定n个数a1,...,an。求 n 个数字当中第1到第r个数当中的中位数,我们可以用二分的经典思想来解决此问题。
所谓中位数就是n个数中从小到大排序第$\lfoor \frac{n}{2} \rfloor$个数。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e3+10;
int n,m,a[MAXN],maxn;
int main() {
cin>>n>>m;
for (int i=1; i<=n; i++) cin>>a[i],maxn=max(maxn,a[i]);
while(m--) {
int lft,rgt;
cin>>lft>>rgt;
int l=1,r=___(1)___;
while(___(2)___) {
int mid= ___(3)___,s1=0,s2=0;
for(int i=lft; i<=rgt; i++) {
if (a[i]>mid) s1++;
if (a[i]<mid) s2++ ;
}
if(s1<=s2) ___(4)___= mid;
else ___(5)___= mid;
}
cout<<l;
}
return 0;
}
39) ①处应填( )




查看答案
40) ②处应填( )




查看答案
41) ③处应填( )




查看答案
42) ④处应填( )




查看答案
43) ⑤处应填( )




查看答案
增值服务权益

1. 试题参考答案和解析查看;
2. 试卷模拟测试;
3. 随机组题测试;
4. 试卷PDF文件下载;
5. 赠送等值学豆;

  订阅  
学员服务
教研服务

小鹏STEM教研服务系统是面向教师的一站式教研、教学和知识管理系统。
订阅服务后,所有题目均可无限制查看和服务。

  详情