CSP-J 初赛模拟卷3
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)
- 下列存储器按存取速度由快至慢排列,正确的是( )。 {{ select(1) }}
- A.硬盘 > 内存 > 高速缓存 >U盘
- B.高速缓存 > 内存 > 硬盘 >U 盘
- C.高速缓存 > 硬盘 > 内存>U盘
- D.U盘 > 硬盘 > 内存 > 高速缓存
- 杨辉三角形和( )算法的思想最接近。 {{ select(2) }}
- A.贪心
- B.二分
- C.DFS
- D.递推
- 下列属于输入设备的是() {{ select(3) }}
- A.显示器
- B.麦克风
- C.音箱
- D.打印机
- 小写字母a的ASCII码值为97,小写字母z的ASCII码值是() {{ select(4) }}
- A.120
- B.119
- C.122
- D.121
- IP地址是每台上网的计算机所必需的,下列IP地址中可以作为合法主机址的是( )。 {{ select(5) }}
- A.225.225.225.225
- B.200.256.192.8
- C.192.168.1.12
- D.0.0.0.0
- 下面哪个可以用作C++程序中的标识符?() {{ select(6) }}
- A.default
- B.private
- C.this
- D.them
- 快速排序在最坏情况下运行的时间复杂度是()。 {{ select(7) }}
- A. O(logn)
- B. O(n)
- C. O(nm)
- D. O(nlogn)
- 字符串 a="98",字符串 b="123”,使用 strcmp 函数,比较两者大小的结果是 ( )。 {{ select(8) }}
- A.a大
- B.b大
- C.一样大
- D.无法判断
- 关于计算机网络,下面的说法哪个是正确的?() {{ select(9) }}
- A.现在的计算机互联网是俄罗斯人发明的
- B.计算机网络拓扑结构只包括星形、流水线型和环形
- C. TCP/IP是因特网的最基本的协议
- D.SMTP属于物理层协议
- 关于信息安全与网络道德,下列做法正确的是( )。 {{ select(10) }}
- A.确认环境安全后再输入支付密码
- B.随意点击不熟悉的电子邮件中的链接
- C.未经许可将其他人的私密照片和视频上传到互联网上
- D.在微信里随意转发未经证实的信息
- 现在有一个十进制算式
13*64+7
,它等于二进制数的() {{ select(11) }}
- A.1100100111 .
- B.1101001111
- C.1101000111
- D.1111101101
- 逻辑表达式A=true,B=C=D=false,则逻辑表达式取值为真的是() {{ select(12) }}
- A.
- B.
- C.
- D.
- 某二叉树树根层次为0,则有64个结点的完全二叉树的高度是() {{ select(13) }}
- A.9
- B.8
- C.7
- D.6
- 书架上同一格放5本书,A和B必须相邻.C和D必须不相邻,不同的放法共有 ( ) 种。 {{ select(14) }}
- A.24
- B.12
- C.18
- D.48
- 字符串S="abcdefgh"的子串个数为() {{ select(15) }}
- A.33
- B.35 。
- C.37
- D.36
二、阅读程序(程序输入不超过数组或字符虫定义的范围,判断题正确填√、错误× 除特殊说明外,判断题每题1.5分,选择题每题3分,共计40分)
(1)
#include<bits/stdc++.h>
using namespace std;
const int SIZE = 100007;
int a[SIZE], b[SIZE];
int main()
{
int n, m, P, q, count=0, ret=0; //第7行
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> p>> q;
a[p]++;
a[q+1]--;
}
for(int i = 1; i <= m; i++) //第15行
{
count += a[i]; //第17行
ret += count; //第18行
}
cout << ret;
return 0;
}
注:输入流中 。
判断题
- 将输入的 p 和 q 改成任意的整数,运行程序都不会出错。 () {{ select(16) }}
- true
- false
- 将第7行中的
count=0
去掉,只定义count
变量,程序的运行结果不会改变。( ) {{ select(17) }}
- true
- false
- 将第17行和第18行互换位置,程序的运行结果不会发生变化。 ( ) {{ select(18) }}
- true
- false
- 将第15行中的i=1改为i=0,程序的运行结果不会改变。 () {{ select(19) }}
- true
- false
选择题
- 将第12~13行中的 p 和 q+1 分别改为 p-1 和 q ,则输出结果() {{ select(20) }}
- A.变大
- B.变小
- C.不变
- D.都有可能
- 若输入为
4 4 1 2 2 3 3 3 1 3
,则输出为( )。. {{ select(21) }}
- A.6
- B.10
- C.7
- D.8
(2)
#include <bits/stdc++.h>
using namespace std;
bool fun(int n)
{
int i=7;
if(n==2 || n==3 || n==5)
return true;
if(n==1 || n%2==0 || n%3==0 || n%5==0)
return false;
while(i*i<=n)
{
if(n%i==0)
return false;
i += 4;
if(n%i==0)
return false;
i+=2;
}
return true;
}
int main()
{
int n, m;
cin >> n >> m;
if(fun(n) && fun(m) && fun(n+m+1))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
判断题
- 程序中n和m只有输入正整数,程序的输出值才可能是YES。() {{ select(22) }}
- true
- false
- 程序中用到了递归函数
bool fun(int n)
。() {{ select(23) }}
- true
- false
- 若输入n和m都是素数,程序的输出值一定是YES。() {{ select(24) }}
- true
- false
- 若输入n和m的值分别是
-1
和2027
,则程序的输出值是YES。() {{ select(25) }}
- true
- false
选择题
- 若输出YES,则输入可能为( )。 {{ select(26) }}
- A.23 29
- B.23 24
- C.23 27
- D.31 37
27.若输出 NO,则输入可能为( )。 {{ select(27) }}
- A.53 127
- B.2029 -1
- C.2023 2027
- D.97 41
(3)
#include<bits/stdc++.h>
using namespace std;
int main()
{
stack<int> s;
char a[1005];
int back,front,result;
cout <<"Input:";
cin >> a;
for (int i = 0;i < strlen(a); i++)
{
if (a[i] >= '0' && a[i] <='9')
s.push(a[i] -'0');
else
{
back = s.top();
s.pop();
front = s.top();
s.pop();
if (a[i]=='+')
result = front + back;
else if(a[i] =='-')
result = front - back;
else if (a[i] =='*')
result = front * back;
else if(a[i]=='/')
result = front / back;
else if(a[i]=='%')
result = front % back;
s.push(result);
}
}
cout << "Output:"<< s.top() << endl;
return 0;
}
判断题
- 将第1行改为#include<iostream>,程序的运行结果不变。() {{ select(28) }}
- true
- false
- 本程序用到了队列而不是栈的思想。() {{ select(29) }}
- true
- false
- 将第12行中的'0'替换为48,程序的运行结果不会改变。() {{ select(30) }}
- true
- false
- 如果输入的都是非零数字和加、减、乘、除四则运算符号,那么运行程序输出的值一定是正整数。 ( ) {{ select(31) }}
- true
- false
选择题
- 本题的主要思想是求( )表达式的值。 {{ select(32) }}
- A.前缀
- B.后缀
- C.中缀
- D.逻辑
- 若输入
234--
,那么程序的输出结果是( ) {{ select(33) }}
- A.3。
- B.2
- C.1
- D.0
34.(4分)若输入数据为5432*%/
,则输出是()。 {{ select(34) }}
- A.3
- B.2
- C.10
- D.0
三、完善程序(单选题,每小题3分,共计30分)
(1) 输入两个正整数 和 ,在 这几个数中任取 个数、按字典序从小到大输所有这样的排列。
输入格式:
输出格式: 第1行输入n和m。
输出从n个数中挑出m个数组成的所有排列,按从小到大的顺序输出。
输入样例:
43
输出样例:
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 15;
bool flag, vis[MAXN];
int nm,i.j,k,a[MAXN];
int main()
{
cin>>n>>m;
memset(vis,false,sizeof(vis));
for(i=1;i<=m;i++)
{
a[i]=i;
vis[i]=true;
}
flag=true;
while(flag)
{
for(1=1;i<=m-1;i++)
cout << a[i]<" ";
cout << a[m]<<endl;
①;
for(i=m;i>=1;i--)
{
}
②;
for(j=a[i]+1;j<=n;j++)
{
if(tvis[j])
{
vis[j]=true;
③;
flag=true;
break;
}
}
if(flag)
{
}
for(k=i+1;k<=m;k++)
{
for(j=1;④;j++)
{
if(!vis[j])
{
a[k]=j;
fvis[j]=true;
break;
}
}
}
⑤;
}
return 0;
}
35.①处应填() {{ select(35) }}
- A.
flag = false
- B.
flag = true
- C.
vis[1]= false
- D.
vis[1]= true
- ②处应填( )。 {{ select(36) }}
- A.
vis[i]= true
- B.
a[i]= i
- C.
vis[a[i]]= true
- D.
vis[a[i]]= false
37.③处应填() {{ select(37) }}
- A.
a[i]=i
- B.
a[i]=j
- C.
a[i] = true
- D.
a[i] = false
- 4处应填( ) {{ select(38) }}
- A.
j<=m
- B.
j<=k
- C.
j<=n
- D.
j<=i
39.⑤处应填( )。 {{ select(39) }}
- A.
exit
- B.
return 0
- C.
continue
- D.
break
(2) 求一个有向图中有多少个环并输出环的总数。
输入格式:
第1行为n,第2行为n个点的编号。
输出格式:
输出有向图的环的总数。
输入样例:
10
7 1 4 3 2 5 9 8 0 6
输出样例:
6
样例说明:
a 0]=7, a[7]=8, a[8]=0, {0,7,8)构成一个环;a[1]=1,{1}构成一个环;a[2]=4,a[4]=2, {2,4}构成一个环;a[3]=3, {3}构成一个环;a[5]=5, {5} 构成一个环;a[6]=9,a[9]=6, {6,9} 构成一个环。该有向图共有 6 个环。
#includecbits/stdc++.h>
using namespace std;
int n,point[100];
bool vis[100];
int main()
{
int cnt;
scanf("%d",Sn);
for (int i = 0; i < n; ++i)
{
scanf("%d",①);
②;
}
cnt = 0;
for (int i = 0; 1< n;++1)
if (③)
{
for (int j=i; !vis[j]; ④)
{
vis[j] = true;
}
⑤;
}
printf("%d", cnt);
return 0;
}
40.①处应填( )。 {{ select(40) }}
- A.
&point
- B.
point + i
- C.
&point + i
- D.
point[i]
41.②处应填( )。 {{ select(41) }}
- A.
vis[j]=false
- B.
vis[j] = true
- C.
vis[i]= true
- D.
vis[i]= false
42.③处应填( )。 {{ select(42) }}
- A.
!vis[i]
- B.
vis[i]
- C.
!vis[point[i]]
- D.
vis[point[i]]
43.④处应填() {{ select(43) }}
- A.
j =point[i]
- B.
j = point[j]
- C.
i=point[j]
- D.
i = point[i]
44.⑤处应填() {{ select(44) }}
- A.
cnt=j+1
- B.
cnt=n-j
- C.
++cnt
- D.
cnt = n-i
初赛模拟卷C
- Status
- Done
- Rule
- OI
- Problem
- 2
- Start at
- 2024-8-15 16:15
- End at
- 2024-8-16 13:45
- Duration
- 2 hour(s)
- Host
- Partic.
- 39