#3726. 普及组 CSP-J 第 3 套初赛模拟试题
普及组 CSP-J 第 3 套初赛模拟试题
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
1. 在网络上,若某台电脑的设备及数据可由其他电脑共享,这台电脑称为( ){{ select(1-1) }}
- 个人计算机
- 副机
- 服务器
- 主机
2. 下列抢占不同数制表示的数中,最大的一个数是( ){{ select(1-2) }}
- 十进制数 220.1
- 二进制数 11011011
- 八进制数 334.1
- 十六进制数 DC.1
3. 字母在计算机中是以编码形式表示的,通用的编码是 ASCII 码,字母“A”的 ASCII 码是 65,字母“E”的 ASCII 码是( ){{ select(1-3) }}
- 05
- 52
- 69
- 68
4. 连接到 internet 上的每台计算机都必须有 1 个( )地址,该地址共含( )个字节。前面若干个字节表示( );后面若干字节表示( )。为了避免使用数字,人们经常用字母替代,这些名字称为( )。( ){{ select(1-4) }}
- IP、四、网络地址、计算机地址、网名
- 网络、四、IP 地址、网内计算机地址、域名
- 网络、不超过十、网页、网址、网名
- IP、四、网络地址、网内计算机地址、域名
5. 在 TCP/IP 协议中,TCP 和 IP 分别提供什么服务( ){{ select(1-5) }}
- 传输层、网络层
- 链路层、网络层
- 传输层、会话层
- 物理层、链路层
6. 一棵树 T 有 2 个度数为 2 的结点、有 1 个度数为 3 的结点、有 3 个度数为 4 的结点,那么树 T 有( )个树叶。( ){{ select(1-6) }}
- 14
- 6
- 18
- 7
7. 在一个图中,所有顶点的度数之和等于所有边数的( )倍。( ){{ select(1-7) }}
- 1/2
- 1
- 2
- 4
8. 下列 IP 地址中正确的是( ){{ select(1-8) }}
- 202.300.12.4
- 192.168.0.3
- 100;128;35;91
- 111-102-35-21
9. 设有 100 个顶点,利用二分法查找时,最大比较次数是( ){{ select(1-9) }}
- 50
- 10
- 25
- 7
10. 一棵二叉树的中序遍历序列为:DGBAECHF,后序遍历序列为:GDBEHFCA,则前序遍历的序列是( ){{ select(1-10) }}
- ABCDFGHE
- ABDGCEFH
- ACBGDHEF
- ACEFHBGD
11. 下面合法的电子邮件地址是( ){{ select(1-11) }}
- http://ybw.online.sh.cn
- ftp://ybw.online.sh.cn
- ybw@online.sh.cn
- http.ybw.online.sh.cn
12. Internet 给我们提供了资源共享、浏览、检索信息和远程登录等多种服务,下面几个选项中用于远程登录的是( ){{ select(1-12) }}
- Telnet
- TCP/IP
- WWW
13. 在数据结构中,链表是( ){{ select(1-13) }}
- 顺序存储的线性表结构
- 非顺序存储的线性表结构
- 非顺序存储的非线性表结构
- 顺序存储的非线性表结构
14. C++ 程序运行时,是在哪种存储器中进行的?( ){{ select(1-14) }}
- 硬盘
- RAM
- ROM
- CACHE
15. 当 A>=B && B>=C 的取值为真时,表达式 A>C||B==C 的值( ){{ select(1-15) }}
- 为真
- 无法判定结果的真假
- 也有可能为假
- 只有当 A、B、C 都相等时才为真
二、阅读程序(程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题每题 1.5 分,选择题每题 4 分,共计 40 分)
(一)
#include<iostream>
#include<cstdio>
using namespace std;
int i,j,n;
int x[101],y[101];
int main()
{
cin>>n;
for(i=1;i<=n;i++) cin>>x[i];
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if( x[i]>x[j] )
y[j]++;
else if( x[i]<x[j] )
y[i]++;
for(i=1;i<=n;i++)
printf("%5d_",y[i]);
cout<<endl;
return 0;
}
判断题
16. 把第 13 行与第 15 行互换位置,结果不会改变。( ){{ dropdown(2-1)[√, ×] }}(1 分)
17. 第 14 行把 if( x[i]<x[j] ) 删掉效果一样。( ){{ dropdown(2-2)[√, ×] }}(1 分)
18. 第 11 行把 i+1 改成 1,数组 y 每个元素的值增加 1 倍。( ){{ dropdown(2-3)[√, ×] }}
19. 数组 y[i] 中存的是 x[i] 在数列中从大到小的次序。( ){{ dropdown(2-4)[√, ×] }}
选择题
20. 此程序的时间复杂度是( ){{ select(2-5) }}
- O(log n)
- O(n log n)
- O(n^2)
- O(n)
21. 此程序如果 n 输入 4,然后输入 2 4 1 3,输出结果是( ){{ select(2-6) }}
- 1 2 3 4
- 2 0 3 1
- 4 3 2 1
- 1 3 0 2
(二)
#include<iostream>
#include<cstdio>
using namespace std;
int n,i,x;
int d[11];
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
d[x]=d[x]+1;
}
d[0]=0;
for(i=1;i<=10;i++)
d[i]=d[i-1]+d[i];
for(i=1;i<=10;i++)
if(d[i]!=d[i-1])
printf("%3d:%4d_",i,d[i-1]+1);
return 0;
}
判断题
22. 输入的 x 值应在 [0,n-1] 的范围内。( ){{ dropdown(2-7)[√, ×] }}(1 分)
23. 把第 12 行改成 d[x]++,不影响程序运行结果。( ){{ dropdown(2-8)[√, ×] }}(1 分)
24. 对任意在 [1,9] 之间的数 i,都有 d[i-1]<d[i]<d[i+1]。( ){{ dropdown(2-9)[√, ×] }}
25. 把第 18 行改成 if(d[i]>d[i-1]),程序运行的结果会发生改变。( ){{ dropdown(2-10)[√, ×] }}
选择题
26. 输入 n=10 后,接着输入 1 3 4 3 5 2 4 3 5 2 后,程序输出结果为( ){{ select(2-11) }}
- 1:1 2:2 3:3 4:2 5:3
- 1:1 2:2 3:4 4:7 5:9
- 1:0 2:1 3:2 4:1 5:2
- 1:1 2:2 3:3 4:4 5:5
27. 把程序第 19 行改成 printf("%3d",i); 后,输入 n=10 后,接着输入 1 3 4 1 5 4 4 3 5 1 后,程序输出结果为( ){{ select(2-12) }}
- 1 2 3 4 5
- 3 2 3 2
- 4 3 4 3
- 1 3 4 5
(三)
#include<iostream>
#include<cstdio>
using namespace std;
int j,i,m;
int a[10];
int main()
{
for(i=2;i<=6;i++)
a[i]=i+1;
do
{
m=2;
for(i=3;i<=6;i++)
if(a[m]>a[i]) m=i;
a[m]=a[m]+m;
m=1;
for(i=2;i<=5;i++)
for(j=i+1;j<=6;j++)
if(a[i]<a[j]) m=0;
}while(m==0);
printf("%d",a[2]);
return 0;
}
判断题
28. 程序结束时,a[2] 的值一定是数组 a 中的最大值。( ){{ dropdown(2-13)[√, ×] }}
29. 第 21 行 m==0 成立时,数组 a[i](2≤i≤6) 从大到小排序。( ){{ dropdown(2-14)[√, ×] }}
30. 程序输出时,a 数组满足:对任意的 2≤i<6,有 a[i]>a[i+1]。( ){{ dropdown(2-15)[√, ×] }}
31. 删除第 16 行代码 m=1 程序结果会发生改变。( ){{ dropdown(2-16)[√, ×] }}
选择题
32. 程序的输出结果为( ){{ select(2-17) }}
- 58
- 59
- 61
- 60
33. 此程序的时间复杂度是( ){{ select(2-18) }}
- O(n³)
- O(n log n)
- O(n²)
- O(n)
三、完善程序(单选题,每小题 3 分,共计 30 分)
(一)(菲波拉契数列)
菲波拉契数列为 1,1,2,3,5,8,13,21,…,其元素产生的规则是前两个数为 1,从第三个数开始每个数等于它前面两个数之和。已知任意一个正整数可以表示为若干个互不相同的菲波拉契数之和。例如:36=21+13+2。
下面的程序是由键盘输入一个正整数 n,输出组成 n 的互不相同的菲波拉契数。算法说明:(1) 寻找小于等于 n 的最大菲波拉契数 a,并以 a 作为组成 n 的一个数。(2) 若 n≠a,则以 n−a 作为 n 的新值,重复步骤 (1)。若 a=n,则结束。
#include<iostream>
#include<cstdio>
using namespace std;
int n;
bool first;
int find(int n)
{
int a,b,c;
a=1;b=1;
do
{
c=a+b;
( ① );
}while(b<n);
if( ② )
return b;
else
( ③ );
}
void p(int n)
{
int a;
a=find(n);
if(first)
{
printf("%4d",a);
first=false;
}else
( ④ );
if(a<n) ( ⑤ );
}
int main()
{
cin>>n;
first=true;
printf("%5d = ",n);
p(n);
cout<<endl;
return 0;
}
34. ① 处应填( ){{ select(3-1) }}
a=c;b=aa=b;b=ca==c;b==aa==b;b==c
35. ② 处应填( ){{ select(3-2) }}
b==nb<na==na<n
36. ③ 处应填( ){{ select(3-3) }}
return creturn breturn a+breturn a
37. ④ 处应填( ){{ select(3-4) }}
printf(" %4d",a)printf(" + %4d",a)printf(" %4d",b)printf(" + %4d",b)
38. ⑤ 处应填( ){{ select(3-5) }}
p(a)p(b)p(n-a)p(n-b)
(二)(最小费用公路网)
现在政府计划在某个区域的城市之间建立高速公路,以使得其中任意两个城市之间都有直接或间接的高速公路相连。费用为每千米为一个单位价格,求最小费用。
输入:n(n≤100,表示城市数目)。接下来 n 行,每行两个数 xi,yi,表示第 i 个城市的坐标。(单位:千米)。输出:最小费用(保留 2 位小数)。程序如下:
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=101;
struct tcity
{
float x,y;
};
tcity c[maxn];
float d[maxn][maxn],a, minf;
int p[maxn],n,i,j,k;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>c[i].x>>c[i].y;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j]=( ① )
p[1]=0;
for(i=2;i<=n;i++) ( ② )
for(i=1;i<=n-1;i++)
{
minf=1E10;
for(j=1;j<=n;j++)
{
if( ③ )
{
minf =d[p[j]][j];
( ④ )
}
}
a=a+d[p[k]][k];
p[k]=0;
for(j=1;j<=n;j++)
if( ⑤ ) p[j] =k;
}
printf("%0.2f",a);
return 0;
}
39. ① 处应填( ){{ select(3-6) }}
sqrt( (c[i].x-c[i].y) * (c[i].x-c[i].y)+(c[j].x-c[j].y) * (c[j].x-c[j].y));sqrt( (c[i].x-c[j].x) * (c[j].x-c[i].x)+(c[i].y-c[j].y) * (c[j].y-c[i].y));sqrt( (c[i].x-c[j].x) * (c[i].x-c[j].x)+(c[i].y-c[j].y) * (c[i].y-c[j].y));sqrt( (c[i].x-c[i].y) * (c[i].x-c[j].y)+(c[i].x-c[i].y) * (c[j].x-c[j].y));
40. ② 处应填( ){{ select(3-7) }}
p[i]=1;p[i]=0;p[n-i]=0;p[n-i]=0;
41. ③ 处应填( ){{ select(3-8) }}
p[j]==0 && d[p[j]][j]< minfp[j]!=0 && d[p[j]][j]< minfp[j]==0 || d[p[j]][j]< minfp[j]!=0 || d[p[j]][j]< minf
42. ④ 处应填( ){{ select(3-9) }}
k=minf;k=0;k=i;k=j;
43. ⑤ 处应填( ){{ select(3-10) }}
d[p[j]][j]> d[k][j]d[p[j]][j]< d[k][j]d[p[i]][j]> d[k][j]d[p[i]][j]< d[k][j]
- ID
- 3726
- 类型
- 客观题
- 上传者