全国入门组 CSP-J 初赛模拟试题 (1)
一、单项选择题 (共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1) 以下与电子邮件无关的网络协议是( )。




查看答案
2) 二讲制粉1111 0110 和 0000 1111进行逻辑异或运算的结果是( )。




查看答案
3) 布尔型变量占用( )个比特位。




查看答案
4) 以下程序段执行完毕后,i和s的值分别是( )。
int i,s=0;
for(i=1;i<=5;i=i+2)
    s=s+i;	




查看答案
5) 已知有序表(13,18,24,35,47,50,62,83,90,115,134),当折半查找值为90的元素时,查找成功的比较次数为( )。




查看答案
6) 数组不具有的特点是( )。




查看答案
7) 用冒泡排序的方法对一个长度为n的数据进行排序,平均时间复杂度为( )。




查看答案
8) 由4个节点构成的形态不同的二叉树有( )种。




查看答案
9) 以下4个数中最大的素数是( )。




查看答案
10) 45和30的最小公倍数是( ) 。




查看答案
11) 深度为k的二叉树,最多含有( )个节点。




查看答案
12) 字符串"abcab"本质不同的子串个数为( )。(子串是指从原字符串取出一段连续的字符串,包括空串“”)




查看答案
13) 十进制小数11.375对应的二进制数是( )。




查看答案
14) 一棵6节点二叉树的中序遍历为 ABDGECF,先序遍历为 DBACEGF.后序遍历为( )。




查看答案
15) 当价格不变时,集成电路上可容纳的元器件的数目,约每隔18~24个月就增加一倍,性能也将提升一倍。提出该规律的是( )。




查看答案
二、阅读程序 (程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题1.5分,选择题3分,共计40分)
#include <iostream>
using namespace std;
int a,b,c;
int main()
{
    cin>>a>>b>c;
    a=b-a;
    b=b-a;
    a=b+a;
    c=b-a;
    cout<<a<<" "<<b<<" "<<c;
    return 0;
}
16) 若输入1 2 3,则输出3 2 1。( )

查看答案
17) 若输入123456789012 2 3,将输出2 123456789012 123456789010。( )

查看答案
18) 该程序中,头文件#include <iostream>可以改成#include <cstdio>。( )

查看答案
19) 若输入10,20,30(逗号隔开),符合程序的输入要求。( )

查看答案
20) 若输入10 20 30, 输出( )。




查看答案
21) 若将第10行的c=b-a 改成c=b,则输人3 6 9 ,输出( )。




查看答案
#include <cstdio>
bool pd(long long n)
{
    if(n==1)
        return false;
    for(long long i=2; i<n; i++)
        if(n%i==0) return false;
    return true;
}
int main()
{
    long long n,i,c=0;
    int INF=1<<30;
    scanf("%d", &n);
    for(i=2; i<=INF; i++)
    {
        if(pd(i))
        {		
            c++;
            if(c==n)
            {
                printf("%d",i);
                return 0;
            }
        }
    }
    printf("\nover");
    return 0;
}
22) 上述代码中,若将第13行修改为INF=1<<40,则输出结果一定不变。( )

查看答案
23) 上述代码中 ,将第23行修改为 break 或 continue 这两种情况后,有相同的输入,在这两种情况下,输出结果也一定相同。( )

查看答案
24) 上述代码中,将第23行修改为 break 后,有相同的输入,变量c的值和未修改的一定相同。( )

查看答案
25) 上述代码中,将第23行修改为 break 后,有相同的输入,输出结果也一定相同。( )

查看答案
26) 输人为:8 输出为 ( )




查看答案
27) 上述代码中,将第6行的i<n修改为( )后功能不变,效率更高。




查看答案
#include <bits/stdc++.h>
using namespace std;
int a[100][100];
int b[100][100];
int f(int m,int n) {
    if(m<=0||n<=0)
        return 0;
    a[0][0] = b[0][0];
    for(int i=1; i<n; i++) a[0][i]=a[0][i-1]+b[0][i];
    for(int i=1; i<m; i++) a[i][0]=a[i-1][0]+b[i][0];
    for(int i=1; i<m; i++) {
        for(int j=1; j<n; j++) {
            a[i][j]=min(a[i-1][j],a[i][j-1])+b[i][j];
        }
    }
    return a[m-1][n-1];
}
int main() {
    int m,n;
    cin>>m>>n;
    for(int i=0; i<m; i++) {
        for(int j=0; j<n; j++) {
            cin>> b[i][j];
        }
    }
    cout<<f(m,n);
    return 0;
}
28) 上述代码实现了对一个长度为 m*n 的二维数组寻找每一行上的最小值进行求和。( )

查看答案
29) 上述代码如果删除第4行,其他地方的b数组都改成a数组,那么结果不变。( )

查看答案
30) 若输人数据为:4 4 \n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则输出的结果为( )。




查看答案
31) 上述代码的时间复杂度为( )




查看答案
32) 我们将上述算法称为( )。




查看答案
33) 上述代码若删除第4行,其他地方的b数组都改成a数组,输人数据为: 3 3 \n 1 2 3 4 5 6 7 8 9 则输出的结果为( )。




查看答案
三、完善程序 (单选题,每题3分,共计30分)
请完善下面的程序,将1~9个数字分别填人3 X 3的九宫格中,第一行的三个数字组一个三位数。要使第二行的三位数是第一行的 2倍,第三行的三位 数是第一行的3倍,且每个格子里的数字都不能重复,现在要求输出所有的填充方案,以每种方案中的第一行组成的三位数升序输出。
输出格式:

每一种方案输出共三行, 每行中每两个数没有空格,每种方案输出后要输出一个空行。
最后一行一个数字,表示方案的总数。
#include <bits/stdc++.h>
using namespace std;
#define n 9
int a[l0],b[10],t1,t2,t3,c;
void f(int s) {
    int i;
    if(___(1)___) {
        t1=a[1]*100-a[2]*10+a[3];
        t2=a[4]*100+a[5]*10+a[6];
        t3=a[7]*100+a[8]*10+a[9];
        if(___(2)___) {
            cout<<t1<<endl<<t2<<endk<<t3<<endl<<endl;
            c++;
        }
        return;
    }
    for(i=1; i<=n; i++) {
        if(b[i]==0) {
            ___(3)___;
            b[i]=1;
            ___(4)___;
            ___(5)___;
        }
    }
}
int main() 
{
    f(1);
    cout<<c<<endl;
}
34) ①处应填( )




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




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




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




查看答案
(拓扑排序)输人一张n节点m条边的有向图,用求该图的一个拓扑排序的方式判断该图是否存在有问环,若有拓扑排序输出拓扑排序,并输出“不存在有向环”,否则直接输出“存在有向环”。
输人:
第一行两个正整数n,m表示节点数和边数。
接下来m行,每行2个正整数x,y表示节点x->y之间有一条边。
输出:
一个拓扑序,按拓朴序输出点的编号,若拓扑序不唯一,输出任何一个均可,并输出“存在有向环”。若无拓扑序,直接输出“不存在有问环”
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#define N 1001
using namespace std;
int n,m,x,y;
vector<int>G[N];
stack <int>q;
int cnt[N],tpc;
bool pd()
{
    for(int i=1; i<=n; i++)
        if(___(1)___)q.push(i);
    while(!q.empty())
    {
        int u=q.top();
        q.pop();
        tpc++;
        cout<<u<<" ";
        for(int i=0; i<G[u].size(); i++)
        {
            int v=G[u][i];
            ___(2)___
            if(!cnt[v]) ___(3)___;
        }
        if(___(4)___) return 1;
        else return 0;
    }
}

int main()
{
    cin>>n>>m;
    while(m--)
    {
        cin>>x>>y;
        G[x].push_back(y);
        ___(5)___;
    }
    if(pd())cout<<"存在有向环";
    else cout<<"不存在有向环";
}
39) ①处应填( )




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




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




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




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




查看答案
增值服务权益

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

  订阅  
学员服务
教研服务

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

  详情