#ACSP1001. cspj-模拟题1
cspj-模拟题1
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)
- 中国的国家顶级域名是({{ select(1) }})。
- .cn
- .ch
- .chn
- .china
- 二进制数 11 1011 1001 0111 和 01 0110 1110 1011 进行按位与运算的结果是({{ select(2) }})。
- 01 0010 1000 1011
- 01 0010 1001 0011
- 01 0010 1000 0001
- 01 0010 1000 0011
- 一个 32 位整型变量占用({{ select(3) }})个字节。
- 4
- 8
- 16
- 32
- 在标准 ASCII 码表中,已知英文字母 Z 的 ASCII 码十进制表示是 90,那么英文字母 B 的 ASCII 码二进制表示是({{ select(4) }})。
- 01000001
- 01000010
- 01000011
- 01000000
- 以下关于 CSP 与 NOIP 的描述正确的是({{ select(5) }})。
- CSP 属于非专业认证,只有在校生才能参加
- CSP 是中国电子学会举办的程序设计竞赛
- CSP 和 NOIP 毫无关系,没参加 CSP 也可以直接参加 NOIP
- CSP 和 NOIP 都是 CCF 旗下的程序设计赛事
- 以下不能用作 C++ 程序中的标识符的是({{ select(6) }})。
- private
- friends
- news
- pascal
- NOI 复赛测评机所用的 Linux 系统属于({{ select(7) }})。
- UML
- IDE
- OS
- Database
- 如果 65,536 种颜色用二进制编码来表示,至少需要({{ select(8) }})个二进制位。
- 16
- 8
- 12
- 10
- 搜索算法中的 BFS 算法经常用到的数据结构是({{ select(9) }})。
- 堆
- 栈
- 链表
- 队列
- 在已经从小到大排好序的 n 元素单向链表中查询是否存在关键字为 k 的元素,最坏情况下运行的时间复杂度是({{ select(10) }})。
- O(logn)
- O(n)
- O(n²)
- O(nlogn)
- 在下列各种排序算法中,不是以“比较”作为主要操作的算法是({{ select(11) }})。
- 归并排序
- 快速排序
- 冒泡排序
- 桶排序
- 关于计算机网络,下面的说法中正确的是({{ select(12) }})。
- 现在的计算机必须连接到互联网才能正常运行
- 192.168.0.1 是 A 类 IP 地址
- 互联网的诞生用到了现代计算机技术和现代通信技术
- 接入互联网的计算机的 IP 地址已经全部升级到了 IPv6 地址
- 将 (2,6,10,17) 分别存储到某个地址区间为 0~10 的哈希表中,如果哈希函数 h(x) =({{ select(13) }}),将不会产生冲突,其中 a%b 表示 a 除以 b 的余数,sqrt 表示开平方,floor 表示向下取整。
- x%11
- x²%11
- 2x%11
- floor(sqrt(x))%11
- 现在有一个十六进制数 27,它等于二进制数的({{ select(14) }})。
- 100011
- 100101
- 100111
- 100011
- 以下逻辑表达式中,不管 A、B 如何取值,恒为假的是({{ select(15) }})。
- ( ¬A∨B)∧(A∨B)∧A
- (( ¬A∨B)∨(A∨¬B))∧B
- A∧((¬A∨B)∨(A∨¬B))∧¬A
- (( ¬A∨B)∨(A∨¬B))∧A∧¬B
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填 ×;除特殊说明外,判断题每题1.5分,选择题每题3分,共计40分)
(1)
#include <bits/stdc++. h>
using namespace std;
int gcd(int a, int b){
int tmp;
if(b) tmp = a%b;
else return a;
while(tmp){
a = b;
b = tmp;
tmp = a%b;
}
return b;
}
int lcm(int a, int b){
return a/gcd(a,b)*b;
}
int main(){
int a,b;
cin >> a >> b;
cout << gcd(a, b) << endl;
return 0;
}
判断题
- 若输入0 2024, 则输出结果为0。({{ select(16) }})
- 正确
- 错误
- 将第5行中的if(b)改为if(0 != b), 程序的运行结果不会改变。 ({{ select(17) }})
- 正确
- 错误
- 若输入2.4 4.8, 则输出错误。 ({{ select(18) }})
- 正确
- 错误
- 将第15行 return a/gcd(a,b)b替换成return ab/gcd(a,b), 程序的运行结果不会改变。 ({{ select(19) }})
- 正确
- 错误
选择题
- 若输入数据为20244204 12348, 则输出为({{ select(20) }})。
- 18
- 36
- 12
- 24
- 若将第20行cout << gcd(a,b) << endl替换成cout << lcm(a, b)<< endl,输入数据为 20244204 12348, 则输出为({{ select(21) }})。
- 6,943,761,972
- 程序出错,无输出
- 3,471,880,986
- 某个负数
(2)
#include <bits/stdc++. h>
using namespace std;
int main()
{
char s[128] = {0};
cin. getline(s,128);
for(int i = 0; i < strlen(s); ++i){
if(s[i] >= 65 && s[i] <= 90){
if(s[i] == 90)
s[i] = 65;
else
s[i] += 1;
s[i] ^= ' ';
}
}
cout << s << endl;
return 0;
}
判断题
- 输入一个长度大于128的字符串,程序的输出一定会出错。 ({{ select(22) }})
- 正确
- 错误
- 将第6行 cin.getline(s,128)更换为 getline(cin,s), 程序的运行结果不变。 ({{ select(23) }})
- 正确
- 错误
- 将第13行s[i] ^= ' '更换为s[i] ^= 32, 程序的运行结果不变。 ({{ select(24) }})
- 正确
- 错误
- 将第9行if(s[i] ==.90)更换为 if(s[i] == 'Z'), 程序的运行结果不变。 ({{ select(25) }})
- 正确
- 错误
选择题
- 若输入字符串s为CSPjs2024, 则输出为({{ select(26) }})。
- dtqjs2024
- cspjs2024
- DTQjs2024
- CSPjs2024
- 若输出 bcdea, 则输入字符串s为({{ select(27) }})。
- BCDEA
- ABCDZ
- abcde
- bcdez
(3)
#include <bits/stdc++. h>
using namespace std;
int used[20],a[20],n;
long long ret=0;
bool flag;
void dfs(int x)
{
int i;
if(x > n)
{
flag=1;
for(i=1;i<=n;i++)
if(a[i]+i > n+2)
{
flag=0;
break;
}
if(flag) ret++;
return;
}
for(i=1;i<=n;i++)
if(used[i]==0)
{
used[i]=1, a[x]=i;
dfs(x+1);
used[i]=0, a[x]=0;
}
}
int main()
{
cin>>n;
dfs(1);
cout<<ret;
return 0;
}
判断题
- 如果输入n的值为0,那么程序在运行过程中一定会出现错误。 ({{ select(28) }})
- 正确
- 错误
- 如果将第26行的a[x]=0去掉,输出的结果不会改变。 ({{ select(29) }})
- 正确
- 错误
- 该程序算法的时间复杂度是 O(n!*n)。 ({{ select(30) }})
- 正确
- 错误
- 输入某个正整数n,程序运行的输出结果可能会等于0。 ({{ select(31) }})
- 正确
- 错误
选择题 32. 若输入 n=2,那么输出结果是({{ select(32) }})。
- 1
- 2
- 3
- 0
- 若输入 n=5,那么输出结果是({{ select(33) }})。
- 16
- 5
- 10
- 12
34.(4分)若输出结果为128, 则输入n 是({{ select(34) }})。
- 8
- 7
- 16
- 32
三、完善程序(单选题,每小题3分,共计30分)
(1) 输入一个十进制正整数 ,然后将 转换为二进制数,最后统计二进制数的各位数字,看看一共有多少位为1,然后打印出总数。
输入格式:
第1行输入十进制正整数。
输出格式:
输出一个整数,表示十进制正整数n转换成的二进制数中有多少位为1。
输入样例:
127
输出样例:
7
样例说明:
十进制数127转换为二进制数 1111111,二进制位一共有7个1,所以输出7。
#include<bits/stdc++. h>
using namespace std;
int a[33], cnt;
int main()
{
int n, sum,x;
cin>>n;
cnt=0;
①;
while(x>0)
{
a[②]=x%2;
③;
}
sum=0;
for(int i=1;④;i++)
if(a[i]==1)
⑤;
cout<<sum<<endl;
return 0;
}
35.①处应填({{ select(35) }})。
- x=n
- x=1
- x=0
- x=n-1
36.②处应填({{ select(36) }})。
- --cnt
- ++cnt
- cnt--
- cnt
37.③处应填({{ select(37) }})。
- x/=2
- n++
- x++
- n--
38.处应填({{ select(38) }})。
- i<cnt
- i<cnt/2
- i<=cnt
- i<=cnt/2
39.⑤处应填({{ select(39) }})。
- sum--
- sum=x
- sum=0
- sum++
(2)
在一个n×n的棋盘上布满了0和1,如图(a)所示(n=7)。为叙述方便,将0用字母表示,如图(b)所示。
跳棋规则如下。
(i) 从某个0格出发,可以向上、下、左、右4个方向连续越过若干个(至少1个)1格后跳入下一个0格。
如图(b)所示,从A 出发,可跳到B,或者跳到E,但不能直接跳到K。在跳到B之后还可以继续跳到F,在跳到E之后可继续跳到F 或K,直到不能再跳为止。
(ii)每个0格只能到达一次,给出的起始点不能再次到达,也不能越过。跳过的距离为跳过1格的个数加1,如从A到B,跳过距离为3,从B到F,跳过距离为2。
问题:当给出棋盘和起始点之后,最远能跳的距离是多少? 如图(b)所示,从A 出发,可跳的路线不止一条,其中一条为:
A - B - F - L - K - E (可能不唯一) 3 2 3 3 3 它的跳过距离为14。
输入格式:
第1行 3个整数n(1≤n≤100)、x、y(x,y是起始点坐标, 图(b)中A 处坐标为1,3)。接下来n行,每行n个数(0或1),数与数之间用一个空格分隔。
输出格式:
一个整数,即最大可跳距离(若不能跳,则输出0)。
输入样例:
4 3 2
1 0 1 0
1 1 1 1
0 0 1 0
1 1 0 1
输出样例:
6
#include <bits/stdc++. h>
using namespace std;
int n,i,j,k, ans;
int a[105][105], vis[105][105]; //a 表示棋盘, vis统计点是否走过
int dx[4]={-1,1,0,0}, dy[4]={0,0,1,-1};
void dfs(int x, int y, int step)
{
ans = ①;
for(int i=0;i<4;i++)
{
int tx=x, ty=y,s=0;
while(tx+dx[i]>0 && tx+dx[i]<=n && ty+dy[i]>0 && ty+dy[i]<=n)
{
tx+=dx[i];
ty+=dy[i];
s++;
if(②)
break;
}
if(tx>0 && tx<=n && ty>0 && ty<=n && vis[tx][ty]==0 && a[tx][ty]==0 && s!=1)
{
vis[tx][ty]=1;
dfs(tx, ty,③);
④;
}
}
}
int main()
{
int x,y,i,j;
cin>>n>>x>>y;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
⑤;
dfs(x,y,0);
cout<<ans<<endl;
return 0;
}
40.①处应填({{ select(40) }})。
- 0
- max(ans, step)
- 1
- step
41.②处应填({{ select(41) }})。
- vis[tx][ty] == 1
- vis[tx][ty] == 0
- a[tx][ty] == 1
- a[tx][ty] == 0
42.③处应填({{ select(42) }})。
- step+s
- step+1
- step
- step-1
43.④处应填({{ select(43) }})。
- vis[tx][ty] = 1
- vis[tx][ty] = 0
- a[tx][ty] = 1
- a[tx][ty] = 0
44.⑤处应填({{ select(44) }})。
- a[x][y] = 1
- a[x][y] = 0
- vis[x][y] = 1
- vis[x][y] = 0