#5380. 2022年厦门市小学生计算机 C++语言竞赛(初赛)试卷

2022年厦门市小学生计算机 C++语言竞赛(初赛)试卷

2022年厦门市小学生计算机C++语言竞赛(初赛)试卷

一.单项选择题(1~10每题1分,11~20每题2分,共30分)

  1. 2022年10月16日上午10时,中国共产党第二十次全国代表大会在北京人民大会堂开幕,这一信息通过报纸、广播、电视、网络等方式传递给寻常百姓。这主要体现了信息具有{{ select(1) }}
  • 依附性
  • 可伪性
  • 传递性
  • 时效性
  1. 现如今智能家居越来越广泛使用,例如通过手机可开关灯、调节恒温器、开关窗帘、控制洗衣机等,这体现了信息技术中的( )应用。{{ select(2) }}
  • 人工智能
  • 云计算
  • 虚拟现实技术
  • 物联网
  1. 在现代信息处理技术中,传感技术、计算机技术、通信技术和网络技术是主导技术。( )是存储、加工与处理信息的技术,是信息技术的核心技术。{{ select(3) }}
  • 网络技术
  • 计算机技术
  • 传感技术
  • 通信技术
  1. 2020年7月31日,中国向全世界郑重宣告,中国自主建设、独立运行北斗系统全面建成,开启了高质量服务全球、造福人类的崭新篇章。你知道该技术应用属于什么方面的应用?{{ select(4) }}
  • 导航定位
  • 区块链
  • 搜索引擎
  • 数据挖掘
  1. VR是指{{ select(5) }}
  • 因特网
  • 人工智能
  • 虚拟现实技术
  • 计算机
  1. 以下哪个C++源代码文件命名是正确的?{{ select(6) }}
  • game.c
  • game.cbb
  • game.c++
  • game.cpp
  1. 在C++程序中,35%9的运算结果是?{{ select(7) }}
  • 3.89
  • 4
  • 7
  • 8
  1. 在C++程序中,9/2的运算结果是?{{ select(8) }}
  • 1
  • 4.5
  • 4
  • 5
  1. 以下变量命名不符合规范的是?{{ select(9) }}
  • const
  • _a
  • my_book
  • hello2
  1. short类型变量能储存的最大整数是?{{ select(10) }}
  • 65535
  • 32767
  • 2147483647
  • 4294967295
  1. 某同学购买了一款正版软件,未经许可把该软件发送给他人共享。这种做法属于{{ select(11) }}
  • 资源共享
  • 侵犯版权
  • 互相帮助
  • 正常交流
  1. 二进制数1101011加上二进制数101,运算结果转换成十进制是多少?{{ select(12) }}
  • 113
  • 110
  • 111
  • 112
  1. 下列关于算法的描述,不正确的是{{ select(13) }}
  • 一个算法必须保证在有限步之后结束
  • 算法的每一步必须有确定的定义
  • 算法一定要有输入,但是可以没有输出
  • 算法中的每一步都可以被分解为基本的可执行的操作
  1. 内存和外存相比,内存的主要特点是{{ select(14) }}
  • 能存储大量信息
  • 能长期保存信息
  • 存取速度快
  • 能同时存储程序和数据
  1. 一张水平像素30垂直像素20的32位色的位图,存储图像信息所需的空间为?{{ select(15) }}
  • 2400B
  • 1200B
  • 1200B
  • 19200B
  1. for(i=0;i<10;i++) 这个循环结束后,i 的值是{{ select(16) }}
  • 9
  • 10
  • 11
  • 12
  1. 下列程序的循环次数是( )次。
int k=0;
while(k<10){
    if(k<1) continue;
    if(k==4) break;
    k++;
}

{{ select(17) }}

  • 5
  • 6
  • 4
  • 死循环,不能确定循环次数
  1. 标准 ASCII 码(American Standard Code for Information Interchange,美国信息交换标准码)使用二进制数组合来表示( )种可能的字符,包括大写和小写字母、数字0~9、标点符号,以及在美式英语中使用的特殊控制字符。{{ select(18) }}
  • 256
  • 128
  • 64
  • 7
  1. 若 w=1,x=2,y=3,z=4,则条件表达式 w<x ? w : y<z ? y : z 的值是{{ select(19) }}
  • 4
  • 3
  • 2
  • 1
  1. 小明写程序时很不注意格式的规范,当他写完下面一段程序后自己也看不清程序逻辑了,请大家帮他分析一下:当 a=1,b=5,c=4,d=3 时,执行完这段程序后 x 的值是
if (a < b)
    if (c < d)
        x = 1;
    else if (a < c)
        if (b < d)
            x = 2;
        else
            x = 3;
    else
        x = 6;
else
    x = 7;

{{ select(20) }}

  • 1
  • 2
  • 3
  • 6

二.填空题(21~30每题3分,共30分)

  1. 十进制数2022转化为十六进制数为(字母用小写字母):{{ input(21) }}

  2. C++判断一个整型变量a,能被3整除的条件是if {{ input(22) }}。

  3. C++定义一个字符型变量c,并在定义时给c赋初始值为字符a的完整语句为:{{ input(23) }}

  4. int x=1,y=6; 执行x=y;y=x;后,x和y的值分别为多少{{ input(24) }}(两值用空格隔开)。

  5. 假设下列两小题变量在每小题运行前已经重新赋为下列的值 {{ input(25) }} int x=3,y=6; int a[]={2,4,3,7,8,9,1,10},b[]={9,3,2,6,3,1,8,10,2,3} ;

  6. 执行for(int i=0;i<=x;i++) {a[x+i]*=b[y+i];}后,a数组元素按顺序为 {{ input(26) }}(用空格分隔每个值)。

  7. 执行for(int i=0;i<=y;i++) {if(a[i]%x) a[i]=a[i+1];}后,a数组元素按顺序为 {{ input(27) }}(用空格分隔每个值)。

  8. 由0、2、5、8、9写成的没有重复数字的四位数中,能被5整除的最大数和最小数的差是{{ input(28) }}。

  9. 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个,请问:1001和1989两个整数的最大公约数为 {{ input(29) }}。

  10. 安排7位工作人员在10月1日到10月7日值班,每人值班一天,其中甲、乙二人都不能安排在10月1日和2日,不同的安排方法共有 {{ input(30) }}种。

三.阅读程序填写结果(31~40每题3分,共30分)

程序一

#include<iostream>
using namespace std;
int main()
{
    int a,x,y,ok1,ok2;
    a=100;
    cin>>x>>y>>ok1>>ok2;
    if((x>y) || ((y!=20) && (ok1==0)) && (ok2!=0))
        a=1;
    else if((ok1!=0) && (ok2==0))
        a= -1;
    else a=0;
    cout<<a<<endl;
    return 0;
}
题号 第1题 第2题 第3题
输入数据 20 20 5 0 30 20 5 0 10 20 0 0
输出数据 {{ input(31) }} {{ input(32) }} {{ input(33) }}

程序二

#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
cin>>str;
for(int i=0;i<str.length();i++)
{
if(str[i]>='a' && str[i]<='z')
str[i]=(str[i]-'a')+'A';
else if(str[i]>='A' && str[i]<='Z')
str[i]=(str[i]-'A')+'a';
else if(str[i]>='0' && str[i]<='9')
str[i]=(str[i]-'0'+3)%10+'0';
}
cout<<str<<endl;
return 0;
}
题号 第1题 第2题 第3题 第4题
输入数据 These N92 12+96 This is a pen.
输出数据 {{ input(34) }} {{ input(35) }} {{ input(36) }} {{ input(37) }}

程序三

#include<cstdio>
#include<iostream>
using namespace std;
int fun(int x)
{
if(x==0 || x==1) return 3;
else return x+fun(x-2);
}
int main()
{
int k;
cin>>k;
printf("%d", fun(k));
return 0;
}
题号 第1题 第2题 第3题
输入数据 1 3 9
输出数据 {{ input(38) }} {{ input(39) }} {{ input(40) }}

四.完善程序(选择正确的选项填充程序空白部分,41~45每题2分,共10分) 给定一个长度为n且从小到大排好序的序列{a1,a2,a3,...,an},要把这个序列分成k段,每段的价值为该段中的最大值减去最小值,现在请你帮忙分段,使得各分段的价值之和最小(保证计算结果都在int范围内)。

#include <bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int n,k,sum,a[N],b[N];
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<n;i++) b[i]= ①;
if( ② )
printf("0\n");
else if(k==1)  ③
else
{
sort(b+1,b+n);
sum=0;
for(int i=1;i<= ④ ;i++)
 ⑤
printf("%d\n",sum);
}
return 0;
}

41.第①空应填写?{{ select(41) }}

  • a[i]-a[i-1]
  • a[i+1]-a[i]
  • b[i]+a[i]
  • b[i]+a[i]-a[i-1]

42.第②空应填写?{{ select(42) }}

  • n=k
  • n>k
  • n==k
  • n!=k

43.第③空应填写?{{ select(43) }}

  • printf("%d\n",a[n]+a[1]);
  • printf("%d\n",a[n]-a[1]);
  • printf("%d\n",b[n]+b[1]);
  • printf("%d\n",b[n]-b[1]);

44.第④空应填写?{{ select(44) }}

  • n-k
  • n-k+1
  • k
  • k-1
  1. 第⑤空应填写?{{ select(45) }}
  • sum=sum+b[i]-a[i];
  • sum=sum+b[i]+a[i];
  • sum=sum+a[i];
  • sum=sum+b[i];