全国入门组 CSP-J 初赛模拟试题 (5)
一、单项选择题 (共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1) 文件型病毒传染的主要对象是()




查看答案
2) 24 针打印机的分辨率约为180dpi. Dpi 数越大,打印精度越高。其中单位dpi是指()




查看答案
3) 内存地址的最重要特点是()




查看答案
4) 多媒体计算机是指()




查看答案
5) 最早的计算机的用途是用于()




查看答案
6) CPU中()机构相当于运算器中的一个存储单元,它的存取速度比存储器要快得多。




查看答案
7) 计算机软件我们一般指的是()




查看答案
8) 操作系统在第几代计算机开始应用()




查看答案
9) 计算机中的数有浮点与定点两种,其中用浮点表示的数,通常由( )这两部分组成()




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




查看答案
11) 下列叙述中,正确的是()




查看答案
12) 用某种排序方法对线性表25 , 84,21,47,15,27,68,35,20进行排序,结点变化如下: (1)25,84, 21,47,15, 27, 68,35,28; (2)20,15, 21,25,47, 27, 68,35,84; (3)15,20, 21,25,35, 27, 47,68,84; (4)15,20, 21,25,27, 35, 47,68,84.那么,排序方法是()




查看答案
13) 如果某二叉树的前序为STUWV, 中序为UWTVS,那么该二叉树的后序是()




查看答案
14) 下面关于数据结构的叙述中,正确的叙述是()




查看答案
15) 表达式(1+34)*5-56/7的后缀表达式为()




查看答案
二、阅读程序 (程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题1.5分,选择题4分,共计40分)
#include <iostream>
using namespace std;
void hanoi(int n,char a, char b,char c) {
if(n==1)
cout<<n<<" "<<a<<" "<<c<<endl;
else {
hanoi(n-1,a,c,b);
cout<<n<<" "<<a<<" "<<c<<endl;
hanoi(n-1,b,a,c);
}
}
int main() {
int n;
cin>>n;
hanoi(n,'A','B','C');
return 0;
}
16) (1分)当n≥0时,程序不会出现死循环。

查看答案
17) (1分)输出共有 2^n 行。

查看答案
18) 当n>0时,将第4行的“==” 改为“<=”,程序输出结果必定不变。

查看答案
19) 将第5行的“n”改为“1”,程序输出结果必定不变。

查看答案
20) (3分)此程序的时间复杂度是()。




查看答案
21) 若要求输出不超过15行,则下列哪个n的值是合法的() 。




查看答案
#include <cstdio>
#define N 1005

using namespace std;
int num[N];

int main() {
int a1=1,n,x;
scanf("%d", &n);
num[1] = 1;
for(int i=1; i<=n; ++i) {
x=0;
for(int j=1; j<=a1; ++j) {
num[j] = num[j] * 5 + x;
x = num[j] / 10;
num[j] %= 10;
}
if (x > 0) num[++a1] = x;
}
printf("0.");
for(int i=a1; i<n; ++i) {
putchar('0');
}
for(int i=a1; i>=1; i--) {
printf("%d", num[i]);
}
putchar('\n');
return 0;
}
22) (1分)程序输出的是5^n的值。

查看答案
23) (1分)程序执行到第27行时,i的值为1。

查看答案
24) 对于任意1≤i≤al,都有0≤num≤9。

查看答案
25) 程序输出的是一个小数,且小数末尾可能有多余的0。

查看答案
26) 此程序的时间复杂度是()。




查看答案
27) 若n=3,则输出为()。




查看答案
#include <iostream>
using namespace std;
int l,n,m,a[50005], ans;
bool check(int dis)
{
int count=0,last=0;
for(int i=1; i<=n; i++)
if(a[i]-last<dis)count++;
else last=a[i];
if(count>m)return 0;return 1;
}
int main()
{
ios::sync_with_stdio(0);
cin>>l>>n>>m;
for(int i=1; i<=n; i++)
cin>>a[i];
a[n+1]=l;
int fl=0,fr=l;
while(fl<=fr)
{
int mid=(fl+fr)/2;
if(check(mid))fl=mid+1, ans=mid;
else fr=mid-1;
}
cout<<ans ;
return 0;
}
28) (1分)将第19行的“fl=0”改为“f1=l”,程序输出结果必定不变。

查看答案
29) (2分)程序执行到第26行时,必有fl>fr。

查看答案
30) (2分)若第23行执行的check(mid)==l, 则最终的ans≤此时的mid。

查看答案
31) (2分)程序执行到第10行时,count 的值表示:如果最短跳跃距离恰好为dis,那么最少需要移走几块岩石。

查看答案
32) 此程序的时间复杂度是()。




查看答案
33) 若输入为:25 5 2 2 11 14 17 21 则输出为()。




查看答案
三、完善程序 (单选题,每题3分,共计30分)
迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
#include<iostream>
using namespace std;
int main()
{
int edgs;
int points ;
int dis[10];
int flag[10];
int infinity=999999;
cin>>points>>edgs ;
int edg[10][10];
for (int i=1; i<=points; i++) // 初始化
{
for (int j=1; j<=points; j++)
{
if (i==j)
{
edg[1][j]=___(1)___;
}
else
{
edg[i][j]=___(2)___;
}
}
}
int point1 , point2 , quanzhi ;
for (i=1; i<=edgs; i++)
{
cin>>point1>>point2>>quanzhi ;
edg[point1][point2]= ___(3)___ ;
}
for (i=1; i<=points; i++)
{
dis[i]=edg[1][i];
}
for (i=1; i<=points; 1++)
{
flag[i]=0;
}
flag[1]=1;
int min,u;
for (i=1; i<=points-1; i++)
{//源点到源点不用比较,因次总的次数少一次
min=infinity;
for (int j=1; j<points; j++)
{
if (f1ag[j]==0&&dis[j]<min)
{//核心思想:依次比较出离源点最近的点
min=___(4)___;
u=j;
}
}
flag[u]=1;
for (int v=1; v<=points; v++)
{//找出离源点最近的点后更新dis里面的源点到各个点的值是否最小
if (edg[u][v]<infinity)
{
if (dis[v]>dis[u]+edg[u][v])
{
dis[V]=___(5)___;
}
}
}
}
for (i=1; i<=points; i++)
{
cout<<dis[i]<" ";
}
cout<<endl;
}
34) ①处应填( )




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




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




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




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




查看答案
完全背包问题
容量为10的背包,有5种物品,每种物品数量无限,其重量分别为5, 4, 3, 2,1,其价值分别为1,2,3,4,5。
设计算法,实现背包内物品价值最大。代码如下(输出50)
#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
int total_weight = 10;
int w[6] = { 0,5,4,3,2,1};
int v[6] = { 0,1,2,3,4,5};
int dp[11]= { ___(1)___ };

for(int i=1; i<=___(2)___; i++)
for(int j=w[i]; j<=___(3)___; j++)
dp[j] =___(4)___;
cout <<___(5)___<< endl;
return 0;
}
39) ①处应填( )




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




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




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




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




查看答案
增值服务权益

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

  订阅  
学员服务
教研服务

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

  详情