#CSP011. 入门级CSP-J第11套初赛模拟试题
入门级CSP-J第11套初赛模拟试题
一、单项选择题(共15题,每题2分,共计30分)
- 十六进制数 -73 的8位二进制补码是( ) {{ select(1) }}
- 10001110
- 10001101
- 01110010
- 01110011
- 以下关于CSP-J/S的描述错误的是( ) {{ select(2) }}
- CSP-J/S非专业认证在校生与在职人员皆可参加
- CSP-J/S是中国计算机学会举办的程序设计竞赛
- CSP-J/S属于NOI系列赛事
- CSP-J/S认证者可在认证完成离开考场后重新返回考场
- 以下语言中,同时符合面向对象和解释执行的是什么语言( ) {{ select(3) }}
- Python
- C
- C++
- Pascal
- 小明家买了一台4K超清电视,其屏幕分辨率是4096×2160,每一个像素都是32位真彩色。一个视频文件有2分钟,每秒钟播放24帧。在没有压缩的情况下,这个视频占用空间最接近以下哪个值( ) {{ select(4) }}
- 80GB
- 25GB
- 100GB
- 200GB
- 假设一个待排序数组已基本有序,以下排序算法效率最高的是( ) {{ select(5) }}
- 插入排序
- 快速排序
- 堆排序
- 选择排序
- 一个包含m个分支结点(非叶子结点)的非空满n叉树,n ≥ 1,它的叶结点数目为( ) {{ select(6) }}
- mn+1
- mn-1
- nm+m-1
- nm-m+1
- 前缀表达式
- * a + b c d的后缀表达式是( ) {{ select(7) }}
a b c d * + -a b c + * d -a b c * + d -- + * a b c d
- 下列关于CPU的说法哪个是正确的?( ) {{ select(8) }}
- CPU全称为中央计算器
- Intel公司发明了世界上最早的CPU
- CPU能直接运行机器语言
- 同样主频下,64位的CPU比32位的CPU运行速度快一倍
- 关于计算机网络,下面的说法哪个是正确的?( ) {{ select(9) }}
- 网络协议之所以分层主要是新技术需要兼容历史上老的实现方案
- 新一代互联网使用的IPv5标准是IPv4标准的升级与补充
- TCP/IP是互联网的基础协议,包含有传输层和网络层的通信协议
- 互联网上每一台主机都需要注册一个固定的域名来对应其IP地址
- 设哈希表的地址空间为0到10,散列函数为
hash(n) = n mod 11,用线性探查法解决碰撞。现从空的哈希表开始,依次插入关键码值84, 25, 38, 57, 71,则最后一个关键码71的地址为( ) {{ select(10) }}
- 7
- 6
- 5
- 4
- 十进制数0.25等于十六进制数的多少?( ) {{ select(11) }}
- 0.10
- 0.80
- 0.64
- 0.40
- 以下逻辑表达式恒为真的是( ) {{ select(12) }}
- A∨(¬A∧B)∨(A∧B)
- B∨(¬A∧B)∨(A∧¬B)
- A∨B∨(¬A∧B)∨(A∧¬B)
- A∨¬B∨(¬A∧B)∨(A∧¬B)
- 已知
rand()可以生成一个0到32767的随机整数,如果希望得到一个范围在 [m, n] 的随机整数,m和n均是不超过1024的正整数且 m < n,那么可行的表达式是什么?( ) {{ select(13) }}
rand()%(n-m)+mrand()%(n-m+1)+mrand()%(n-m)+m+1rand()%(n-m+1)+m+1
- CSP-J初赛结束后,某学校1位教练带4名女生和5名男生排成一行拍照留念,要求男生必须排在一起,老师在中间,女生也必须排在一起,那么不同的排列方式共有( )种 {{ select(14) }}
- 2880
- 5760
- 8640
- 11520
- 一张有10个结点的非连通无向图最多有( )条边 {{ select(15) }}
- 40
- 81
- 72
- 36
二、阅读程序(共计40分;判断题每题1.5分,选择题每题3分,特殊标注除外)
(一)数值交换
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
a=a*b;
b=a/b;
a=a/b;
c=a/b;
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}
判断题
16. 若输入2 4 1,则输出4 2 2。( )
{{ select(16) }}
- 正确
- 错误
- 若输入
1234567890 8 5,则输出a和b分别是8和1234567890。( ) {{ select(17) }}
- 正确
- 错误
- 将第1行头文件
#include<iostream>替换成#include<bits/stdc++.h>,程序运行结果不会改变。( ) {{ select(18) }}
- 正确
- 错误
- 将第1行头文件替换成
#include<cstdio>,第11行替换为printf("%d%d%d\n",a,b,c);,程序运行结果不会改变。( ) {{ select(19) }}
- 正确
- 错误
选择题
20. 若输入数据为3 7 3,则输出为( )
{{ select(20) }}
- 7 3 3
- 7 3 2
- 3 7 3
- 3 7 2
- 若将第10行
c=a/b改成c=b*a,输入0 4 3,则输出是( ) {{ select(21) }}
- 4 0 0
- 4 0 3
- 0 4 0
- 程序出错无输出
(二)欧拉函数计算
#include<bits/stdc++.h>
using namespace std;
int n,m,result,a[101],b[101];
int power (int x,int y)
{
int i,ret=1;
for(i=1;i<=y;++i)
ret*=x;
return ret;
}
int main()
{
int i=2;
cin>>n;
while(i!=n)
{
if(0==n%i)
{
++m;
a[m]=i;
while(0==n%i)
{
++b[m];
n/=i;
}
}
++i;
}
result=1;
for(i=1;i<=m;++i)
{
result*=(a[i]-1)*power(a[i],b[i]-1);
}
cout<<result;
}
判断题 22. 不管输入什么值,程序的输出值一定比输入值大。( ) {{ select(22) }}
- 正确
- 错误
- 若输入n是一个质数,则输出值result也可能是一个质数。( ) {{ select(23) }}
- 正确
- 错误
- 若输入n是一个质数,程序执行到第29行时,i的值等于刚开始输入的n。( ) {{ select(24) }}
- 正确
- 错误
- 若输入n的值等于正整数c的正整数d次方 c^d(c,d ≥ 2),程序的第15行循环执行完成后,m的值为1,a[1]的值为c。( ) {{ select(25) }}
- 正确
- 错误
选择题 26. 若输入 n=2400,则输出result为( ) {{ select(26) }}
- 640
- 1200
- 2400
- 960
- 若输出 result = 2400,则输入n可能为( ) {{ select(27) }}
- 3200
- 9000
- 6400
- 7200
(三)字符串字符统计
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
char ch1,ch2;
getline(cin,str);
ch1=ch2=' ';
for(int i=0;i<str.size();++i){
if(ch1<str[i])
{
ch2=ch1;
ch1=str[i];
}
else if(ch2<str[i])
ch2=str[i];
}
if(isalpha(ch1))
ch1=';';
if(isdigit(ch2))
ch2=ch2-'0'+48;
cout<<ch1<<" "<<int(ch2)<<endl;
return 0;
}
判断题
28. 若将第8行替换为cin>>str;,程序运行结果不会改变。( )
{{ select(28) }}
- 正确
- 错误
- 若输入字符串只包含大写字母,则输出
int(ch2)一定小于91。( ) {{ select(29) }}
- 正确
- 错误
- 若将第20行替换为
ch1^=32;,程序运行结果不会改变。( ) {{ select(30) }}
- 正确
- 错误
- 若输入
555555,程序运行结果输出为5 5。( ) {{ select(31) }}
- 正确
- 错误
选择题
32. 若输入数据为654321,程序运行结果输出为( )
{{ select(32) }}
- 6 5
- 6 53
- 1 2
- 6 1
- 若输入只有3个数字型字符,输出为
3 50,则输入一共有多少种不同方案( ) {{ select(33) }}
- 18
- 24
- 8
- 32
- (4分)若输入数据为
The 19th Asian Games Hangzhou 2022,则输出是( ) {{ select(34) }}
- Z 117
- z 117
- Z 9
- z 9
三、完善程序(单选题,每小题3分,共计30分)
(一)最少按键问题
给出由0和1组成的初始字符串与目标字符串。按下某一位置的字符时,该位置及其左右相邻字符会翻转(0变1,1变0),两端位置仅影响自身与相邻一侧。求使初始串变为目标串的最少按键次数,无法完成则输出0。
#include<bits/stdc++.h>
using namespace std;
string a,b,temp;
int MIN=0,push_cnt;
void change(int i)
{
if(i>=0 && ①)
{
if(②)
temp[i]='1';
else
temp[i]='0';
}
}
void push(int i)
{
change(i-1);
change(i);
change(i+1);
③;
}
void traverse()
{
for(int i=1;i<a.size();i++)
{
if(④)
{
push(i);
}
}
if(temp==b && push_cnt<MIN)
⑤;
}
int main()
{
cin>>a>>b;
MIN=0x3F3F3F3F;
//第1种情况,按第1个字符
push_cnt=0;
temp=a;
push(0);
traverse();
//第2种情况,不按第1个字符
push_cnt=0;
temp=a;
traverse();
if(MIN==0x3F3F3F3F)
cout<<0;
else
cout<<MIN;
return 0;
}
- ①处应填( ) {{ select(35) }}
i<a.size()i<=a.size()i<=a.length()i<=sizeof(a)
- ②处应填( ) {{ select(36) }}
'0'==temp[i-1]'0'==temp[i]'0'==temp[i+1]0==temp[i]
- ③处应填( ) {{ select(37) }}
push_cnt++push_cnt--MIN=push_cnt+1MIN =push_cnt
- ④处应填( ) {{ select(38) }}
temp[i-1]!=a[i-1]temp[i-1]==a[i-1]temp[i-1]!=b[i-1]temp[i-1]==b[i-1]
- ⑤处应填( ) {{ select(39) }}
push_cnt++push_cnt--MIN =push_cnt+1MIN = push_cnt
(二)堆排序
#include<iostream>
#include<algorithm>
using namespace std;
void heap_change(int*arr,int i,int len)
{
int l_kid=2*i;
int r_kid=2*i+1;
int max=i;
if(i<=len/2)
{
if(①)
{
max=l_kid;
}
if(②)
{
max=r_kid;
}
if(③)
{
swap(arr[i],arr[max]);
④
}
}
}
void build_heap(int*arr,int len)
{
for(int i=len/2;i>=1;--i)
{
heap_change(arr,i,len);
}
}
void heap_sort(int*arr,int len)
{
int i;
build_heap(arr,len);
for(i=len;i>=1;--i)
{
swap(arr[1],arr[i]);
⑤;
}
}
void print_value(int*a, int len)
{
for(int i=1;i<=len;++i)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
int main()
{
int n;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
print_value(a,n);
heap_sort(a,n);
print_value(a,n);
return 0;
}
- ①处应填( ) {{ select(40) }}
l_kid>len && arr[l_kid] >arr[max]l_kid<=len && arr[l_kid]>arr[max]r_kid>len && arr[r_kid]>arr[max]r_kid<=len && arr[r_kid]>arr[max]
- ②处应填( ) {{ select(41) }}
l_kid>len && arr[l_kid]>arr[max]l_kid<=len && arr[l_kid]>arr[max]r_kid>len && arr[r_kid]>arr[max]r_kid<=len && arr[r_kid] >arr[max]
- ③处应填( ) {{ select(42) }}
- max
- max!=i
- max%2
- max<=size
- ④处应填( ) {{ select(43) }}
heap_change(arr, i, len)heap_change(arr, max, len)heap_change(arr, max-1, len)heap_change(arr, max, len/2)
- ⑤处应填( ) {{ select(44) }}
heap_change(arr, 1,i)heap_change(arr, 1, i+1)heap_change(arr,1,i-1)heap_change(arr, 1,len)
粤公网安备44195502000195号