#5380. 2022年厦门市小学生计算机 C++语言竞赛(初赛)试卷
2022年厦门市小学生计算机 C++语言竞赛(初赛)试卷
2022年厦门市小学生计算机C++语言竞赛(初赛)试卷
一.单项选择题(1~10每题1分,11~20每题2分,共30分)
- 2022年10月16日上午10时,中国共产党第二十次全国代表大会在北京人民大会堂开幕,这一信息通过报纸、广播、电视、网络等方式传递给寻常百姓。这主要体现了信息具有{{ select(1) }}
- 依附性
- 可伪性
- 传递性
- 时效性
- 现如今智能家居越来越广泛使用,例如通过手机可开关灯、调节恒温器、开关窗帘、控制洗衣机等,这体现了信息技术中的( )应用。{{ select(2) }}
- 人工智能
- 云计算
- 虚拟现实技术
- 物联网
- 在现代信息处理技术中,传感技术、计算机技术、通信技术和网络技术是主导技术。( )是存储、加工与处理信息的技术,是信息技术的核心技术。{{ select(3) }}
- 网络技术
- 计算机技术
- 传感技术
- 通信技术
- 2020年7月31日,中国向全世界郑重宣告,中国自主建设、独立运行北斗系统全面建成,开启了高质量服务全球、造福人类的崭新篇章。你知道该技术应用属于什么方面的应用?{{ select(4) }}
- 导航定位
- 区块链
- 搜索引擎
- 数据挖掘
- VR是指{{ select(5) }}
- 因特网
- 人工智能
- 虚拟现实技术
- 计算机
- 以下哪个C++源代码文件命名是正确的?{{ select(6) }}
- game.c
- game.cbb
- game.c++
- game.cpp
- 在C++程序中,35%9的运算结果是?{{ select(7) }}
- 3.89
- 4
- 7
- 8
- 在C++程序中,9/2的运算结果是?{{ select(8) }}
- 1
- 4.5
- 4
- 5
- 以下变量命名不符合规范的是?{{ select(9) }}
- const
- _a
- my_book
- hello2
- short类型变量能储存的最大整数是?{{ select(10) }}
- 65535
- 32767
- 2147483647
- 4294967295
- 某同学购买了一款正版软件,未经许可把该软件发送给他人共享。这种做法属于{{ select(11) }}
- 资源共享
- 侵犯版权
- 互相帮助
- 正常交流
- 二进制数1101011加上二进制数101,运算结果转换成十进制是多少?{{ select(12) }}
- 113
- 110
- 111
- 112
- 下列关于算法的描述,不正确的是{{ select(13) }}
- 一个算法必须保证在有限步之后结束
- 算法的每一步必须有确定的定义
- 算法一定要有输入,但是可以没有输出
- 算法中的每一步都可以被分解为基本的可执行的操作
- 内存和外存相比,内存的主要特点是{{ select(14) }}
- 能存储大量信息
- 能长期保存信息
- 存取速度快
- 能同时存储程序和数据
- 一张水平像素30垂直像素20的32位色的位图,存储图像信息所需的空间为?{{ select(15) }}
- 2400B
- 1200B
- 1200B
- 19200B
- for(i=0;i<10;i++) 这个循环结束后,i 的值是{{ select(16) }}
- 9
- 10
- 11
- 12
- 下列程序的循环次数是( )次。
int k=0;
while(k<10){
if(k<1) continue;
if(k==4) break;
k++;
}
{{ select(17) }}
- 5
- 6
- 4
- 死循环,不能确定循环次数
- 标准 ASCII 码(American Standard Code for Information Interchange,美国信息交换标准码)使用二进制数组合来表示( )种可能的字符,包括大写和小写字母、数字0~9、标点符号,以及在美式英语中使用的特殊控制字符。{{ select(18) }}
- 256
- 128
- 64
- 7
- 若 w=1,x=2,y=3,z=4,则条件表达式 w<x ? w : y<z ? y : z 的值是{{ select(19) }}
- 4
- 3
- 2
- 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分)
-
十进制数2022转化为十六进制数为(字母用小写字母):{{ input(21) }}
-
C++判断一个整型变量a,能被3整除的条件是if {{ input(22) }}。
-
C++定义一个字符型变量c,并在定义时给c赋初始值为字符a的完整语句为:{{ input(23) }}
-
int x=1,y=6; 执行x=y;y=x;后,x和y的值分别为多少{{ input(24) }}(两值用空格隔开)。
-
假设下列两小题变量在每小题运行前已经重新赋为下列的值 {{ 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} ;
-
执行for(int i=0;i<=x;i++) {a[x+i]*=b[y+i];}后,a数组元素按顺序为 {{ input(26) }}(用空格分隔每个值)。
-
执行for(int i=0;i<=y;i++) {if(a[i]%x) a[i]=a[i+1];}后,a数组元素按顺序为 {{ input(27) }}(用空格分隔每个值)。
-
由0、2、5、8、9写成的没有重复数字的四位数中,能被5整除的最大数和最小数的差是{{ input(28) }}。
-
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个,请问:1001和1989两个整数的最大公约数为 {{ input(29) }}。
-
安排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
- 第⑤空应填写?{{ select(45) }}
- sum=sum+b[i]-a[i];
- sum=sum+b[i]+a[i];
- sum=sum+a[i];
- sum=sum+b[i];