#YHCSPJ0012. CSP-J模拟卷12

CSP-J模拟卷12

选择题

  1. (2分)中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。{{ select(1) }}
  • 1983
  • 1984
  • 1985
  • 1986
  1. (2分)一个32位整型变量占用( )个字节。{{ select(2) }}
  • 4
  • 8
  • 32
  • 128
  1. (2分)下列不同进制数中与其他三项不等的是( )。{{ select(3) }}
  • (269)₁₆
  • (617)₁₀
  • (1151)₈
  • (1001101011)₂
  1. (2分)深度为h的满k叉树(k>1)的结点总数为( )。{{ select(4) }}
  • (k^(h+1)-1)/(k-1)
  • k^(h-1)
  • k^h
  • (k^h-1)/(k-1)
  1. (2分)与程序段s = a; for(b=1; b<=c; b++) s=s+1;等价的赋值语句是( )。{{ select(5) }}
  • s = a + b
  • s = a + c
  • s = s + c
  • s = b + c
  1. (2分)2048×1024像素的32位真彩色图像存储空间为( )。{{ select(6) }}
  • 16MB
  • 4MB
  • 8MB
  • 2MB
  1. (2分)无向图G有16条边且每个顶点度数为2,G的顶点数为( )。{{ select(7) }}
  • 10
  • 12
  • 8
  • 16
  1. (2分)程序计算s=1+1/2+1/3+…+1/10时错误的行是( )。
   s = 1.0;
   for(n=10; n>1; n--)
       s = s + 1/n;

{{ select(8) }}

  • s=1.0;
  • for循环
  • s=s+1/n;
  • 输出语句
  1. (2分)8位二进制补码10101011对应的十进制数是( )。{{ select(9) }}
  • 43
  • -85
  • -43
  • -84
  1. (2分)5副手套取6只恰好配成2副的取法有( )种。{{ select(10) }}
  • 120
  • 180
  • 150
  • 30
  1. (2分)根高度为1、61个结点的完全二叉树高度为( )。{{ select(11) }}
  • 5
  • 6
  • 7
  • 8
  1. (2分)错误的IP地址是( )。{{ select(12) }}
  • 162.105.135.27
  • 192.168.0.1
  • 256.256.129.1
  • 10.0.0.1
  1. (2分)寄存器是( )的重要组成部分。{{ select(13) }}
  • 硬盘
  • 高速缓存
  • 内存
  • CPU
  1. (2分)与电子邮件无关的协议是( )。{{ select(14) }}
  • POP3
  • SMTP
  • WTO
  • IMAP
  1. (2分)三道菜洗菜、切菜、炒菜各10分钟,最短耗时( )分钟。{{ select(15) }}
  • 90
  • 60
  • 50
  • 40

阅读理解1(12分)

#include <cstdlib>
#include <iostream>
using namespace std;

char encoder[26] = {'C','S','P',0};
char decoder[26];
string st;

int main() {
    int k = 0;
    for (int i = 0; i < 26; ++i)
        if (encoder[i] != 0) ++k;
    for (char x = 'A'; x <= 'Z'; ++x) {
        bool flag = true;
        for (int i = 0; i < 26; ++i)
            if (encoder[i] == x) {
                flag = false;
                break;
            }
        if (flag) {
            encoder[k] = x;
            ++k;
        }
    }
    for (int i = 0; i < 26; ++i)
        decoder[encoder[i] - 'A'] = i + 'A';
    cin >> st;
    for (int i = 0; i < st.length(); ++i)
        st[i] = decoder[st[i] - 'A'];
    cout << st;
    return 0;
}

第16题(1.5分)

输入非大写字母可能越界。(){{ select(16) }}

  • 正确
  • 错误

第17题(1.5分)

输入非空串与输出一定不同。(){{ select(17) }}

  • 正确
  • 错误

第18题(1.5分)

第12行i<26改为i<3,结果不变。(){{ select(18) }}

  • 正确
  • 错误

第19题(1.5分)

第26行i<26改为i<16,结果改变。(){{ select(19) }}

  • 正确
  • 错误

第20题(3分)

输出为"ABC ABC ABC A",输入含:{{ select(20) }}

  • S和P
  • S和B
  • A和P
  • A和B

第21题(3分)

输出为"CSPCSPCSPCSP",输入含:{{ select(21) }}

  • P和K
  • J和R
  • J和K
  • P和R

阅读理解2(14分)

#include <cstdio>
using namespace std;
int n;
int a[100];
int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &a[i]);
    int ans = 1;
    for (int i = 1; i <= n; ++i) {
        if (i > 1 && a[i] < a[i - 1])
            ans = i;
        while (ans < n && a[i] >= a[ans + 1])
            ++ans;
        printf("%d\n", ans);
    }
    return 0;
}

第22题(1.5分)

第16行ans一定大于i。(){{ select(22) }}

  • 正确
  • 错误

第23题(1.5分)

输出ans≤n。(){{ select(23) }}

  • 正确
  • 错误

第24题(1.5分)

第12行<改为!=,结果不变。(){{ select(24) }}

  • 正确
  • 错误

第25题(1.5分)

ans-i>2时,a[i+1]≤a[i]。(){{ select(25) }}

  • 正确
  • 错误

第26题(3分)

输入严格递增数列,时间复杂度:{{ select(26) }}

  • O(logn)
  • O(n²)
  • O(nlogn)
  • O(n)

第27题(3分)

最坏时间复杂度:{{ select(27) }}

  • O(n²)
  • O(logn)
  • O(n)
  • O(nlogn)

阅读理解3(14分)

#include<iostream>
using namespace std;
const int V=100;
int n,m,ans,e[V][V];
bool visited[V];
void dfs(int x,int len) {
    int i; 
    visited[x]=true; 
    if(len>ans) ans=len; 
    for(i=1;i<=n;i++)
        if((!visited[i])&&(e[x][i]!=-1)) 
            dfs(i,len+e[x][i]); 
    visited[x]=false; 
}
int main() {
    int i,j,a,b,c; 
    cin>>n>>m; 
    for(i=1;i<=n;i++) 
        for(j=1;j<=n;j++) 
            e[i][j]=-1; 
    for(i=1;i<=m;i++) {
        cin>>a>>b>>c; 
        e[a][b]=c; 
        e[b][a]=c; 
    }
    for(i=1;i<=n;i++) 
        visited[i]=false; 
    ans=0; 
    for(i=1;i<=n;i++) 
        dfs(i,0); 
    cout<<ans<<endl; 
    return 0; 
}

第28题(1.5分)

该程序用于求解无向图的最长路径。(){{ select(28) }}

  • 正确
  • 错误

第29题(1.5分)

有向环图可以正常输出结果。(){{ select(29) }}

  • 正确
  • 错误

第30题(3分)

输入4 2,1 2 1,3 4 1,输出:{{ select(30) }}

  • 8
  • 4
  • 2
  • 1

第31题(3分)

输入4 6,各边权1,输出:{{ select(31) }}

  • 1
  • 3
  • 5
  • 7

第32题(3分)

输入4 3,边为1-2(10)、2-3(20)、3-1(30),输出:{{ select(32) }}

  • 30
  • 60
  • 90
  • 120

第33题(3分)

输入4 6,边权10、20、30、40、50、60,输出:{{ select(33) }}

  • 60
  • 100
  • 150
  • 200

编程填空1(15分)

题目描述:最小区间覆盖

struct segment { int a, b; } A[MAXN];
void sort() {
    for (int i = 0; i < n; i++)
        for (int j = 1; j < n; j++)
            if (①) {
                segment t = A[j];
                ②;
            }
}
int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i++)
        cin >> A[i].a >> A[i].b;
    sort();
    int p = 1;
    for (int i = 1; i < n; i++)
        if (③)
            A[p++] = A[i];
    n = p;
    int ans = 0, r = 0;
    int q = 0;
    while (r < m) {
        while (④)
            q++;
        ⑤;
        ans++;
    }
    cout << ans << endl;
    return 0;
}

第34题(3分)①处应填(){{ select(34) }}

  • A[j].b>A[j-1].b
  • A[j].a<A[j-1].a
  • A[j].a>A[j-1].a
  • A[j].b<A[j-1].b

第35题(3分)②处应填(){{ select(35) }}

  • A[j+1]=A[j];A[j]=t;
  • A[j-1]=A[j];A[j]=t;
  • A[j]=A[j+1];A[j+1]=t;
  • A[j]=A[j-1];A[j-1]=t;

第36题(3分)③处应填(){{ select(36) }}

  • A[i].b>A[p-1].b
  • A[i].b<A[i-1].b
  • A[i].b>A[i-1].b
  • A[i].b<A[p-1].b

第37题(3分)④处应填(){{ select(37) }}

  • q+1<n&&A[q+1].a<=r
  • q+1<n&&A[q+1].b<=r
  • q<n&&A[q].a<=r
  • q<n&&A[q].b<=r

第38题(3分)⑤处应填(){{ select(38) }}

  • r=max(r, A[q+1].b)
  • r=max(r, A[q].b)
  • r=max(r, A[q+1].a)
  • q++

编程填空2(15分)

题目描述:最大子矩阵和

#include <iostream>
using namespace std;
const int SIZE = 100;
int matrix[SIZE+1][SIZE+1];
int rowsum[SIZE+1][SIZE+1];
int m, n, i, j, first, last, area, ans;
int main() {
    cin >> m >> n;
    for (i = 1; i <= m; i++)
        for (j = 1; j <= n; j++)
            cin >> matrix[i][j];
    ans = matrix   ①;
    for (i = 1; i <= m; i++)
        ②;
    for (i = 1; i <= m; i++)
        for (j = 1; j <= n; j++)
            rowsum[i][j] = ③;
    for (first = 1; first <= n; first++)
        for (last = first; last <= n; last++) {
            ④;
            for (i = 1; i <= m; i++) {
                area += ⑤;
                if (area > ans)
                    ans = area;
                if (area < 0)
                    area = 0;
            }
        }
    cout << ans << endl;
    return 0;
}

第39题(3分)①处应填(){{ select(39) }}

  • [1][1]
  • [m][n]
  • [1][n]
  • [m][1]

第40题(3分)②处应填(){{ select(40) }}

  • rowsum[i][0] = 0
  • rowsum[0][i] = 0
  • rowsum[i][n] = 0
  • rowsum[n][i] = 0

第41题(3分)③处应填(){{ select(41) }}

  • rowsum[i][j-1] + matrix[i][j]
  • rowsum[i-1][j] + matrix[i][j]
  • rowsum[i][j-1] - matrix[i][j]
  • rowsum[i-1][j] - matrix[i][j]

第42题(3分)④处应填(){{ select(42) }}

  • area = 1
  • area = 0
  • ans = 0
  • ans = 1

第43题(3分)⑤处应填(){{ select(43) }}

  • rowsum[i][last] - rowsum[i][first-1]
  • rowsum[i][last] + rowsum[i][first-1]
  • rowsum[last][i] - rowsum[first-1][i]
  • rowsum[last][i] + rowsum[first-1][i]