#1630. 信息素养大赛——小学组模拟卷 2
信息素养大赛——小学组模拟卷 2
信息素养大赛——小学组模拟卷 2
一、单选题(共20题,每题2分,共40分)
1 近日,空中客车公司表示,约 6000 架空客 A320 系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故分析后的结果显示,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的 ( )
{{ select(1) }}
- 辐射传感器
- 处理器
- 内存单元
- 输出设备
2 下面的 C++ 代码在某集成开发环境中编译运行时,提示有 “Invalid Character”(“无效字符”)错误。可能的原因是 ( )
int a, b; a=3,b = 4; // L1
cout << a; // L2
cout << b; // L3
{{ select(2) }}
- L1 行代码中的逗号很可能是中文逗号,应该改为英文逗号。
- L1 行应该分为两行,分别是 a=3 和 b=4。
- 代码运行前没有保存到文件。
- L2 和 L3 不能分为两行,应合并为一行。
3 下面有关 C++ 变量的说法,正确的是 ( )
{{ select(3) }}
- 不可以用 for 作为变量名,因为 for 是 C++ 的关键字(保留字)。
- _tnt 不可以是变量名,因为变量名的第一个字符必须是英文字母。
- _tnt_不可以是变量名,因为最后一个字符容易与减号混淆。
- 可以用 printf 作为变量名,因为 printf 是关键字,但这不是好习惯,因为 printf 有约定的功能与含义。
4 X是 C++ 的整型变量,则cout << (X=3, X++, ++X);执行后的输出是 ( )
{{ select(4) }}
- 3
- 4
- 5
- 不确定
5 C++ 表达式2 + 3 * 4 % 5的值为 ( )
{{ select(5) }}
- 0
- 4
- 14
- 50
6 下面的 C++ 代码执行后,其输出是 ( )
a = 3; b = a = 4; printf("%d %d", a, b);
{{ select(6) }}
- 4 4
- 3 3
- 3 4
- 4 3
7 下面 C++ 代码执行后输出是 ( )
int i;
for (i = 10; i < 100; i += 10){
if (i % 10 == 0)
continue;
printf("%d#",i);
}
if(i >= 100)
printf("%d END",i);
{{ select(7) }}
- 10#20#30#40#50#60#70#80#90#100 END
- 100#100 END
- 100 END
- 没有输出
8 两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的 C++ 代码用于实现该操作,横线处应该填写的代码是 ( )
int N,M;
cin >>N>>M;
while (N!=M){
if(N>M)
________;
else
________;
}
cout <<N;
{{ select(8) }}
- N=N-M;M=M-N
- M=M-N;N=N-M
- M=N-M;N=M-N
- N,M=M,N;M,N=N,M
9 如果一个正整数能被 3 整除,或者某一位能被 3 整除,则称之为 “漂亮数”。下面的 C++ 代码用于判断正整数 N 是否为漂亮数,L1 行的横线处应该填入的代码是 ( )
int N,Flag;
cin>>N;
Flag=0;//"非漂亮数"
if(N%3==0)
Flag=1;//"漂亮数"
else
while (N!=0){
if(________) {//L1
Flag=1;
break;
}
N/=10;
}
cout<<(Flag?"漂亮数":"非漂亮数");
{{ select(9) }}
- N% 10==0
- N%3%10==0
- N%10%3
- N%10%3==0
10 执行下面 C++ 代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填入 ( )
int count=0;
int a,bc,d,tmp;
for (int i=1000;i<=9999;i++) {
a=(tmp=i)/1000;
________;
bc=tmp/10;
d=tmp-bc*10;
if(a+d==bc) {
count++;
}
}
cout << count;
{{ select(10) }}
- tmp=i/10;
- tmp=i%100;
- tmp-=a*1000;
- tmp=i-i%1000;
11 小明最近为了备考 GESP,开始看 B 站上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,那他平时上学所在的教学楼内的网络是一个 ( )
{{ select(11) }}
- PAN
- LAN
- MAN
- WAN
12 一个小数是 ### 0123123123…… 无限循环,其小数点后 1 位是 1,后 2 位是 2,依此类推,求第 N 位的值。横线处应填入的代码是 ( )
int N;
cin >> N;
remainder = ________;
if (remainder == 0)
cout << 1;
else if (remainder == 1)
cout << 2;
else
cout << 3;
{{ select(12) }}
- N % 3
- (N - 1) % 3
- N / 3
- (N - 1) / 3
13 某同学执行 C++ 代码时printf("%g\n", (3 + ### 31415926535));输出 ### 614159,其原因最可能是 ( )
{{ select(13) }}
- C++ 中整数和浮点数相加时,整数会被转换为浮点数,而某些十进制小数无法精确表示为二进制小数,从而产生某些舍入误差。
- C++ 的 printf 函数在输出浮点数时根据格式有默认小数点位数,因此输出了较少的位数。
-
31415926535 是一个无限循环小数,在计算机中无法精确表示。
- 由于计算机 CPU 的运算错误导致。
14 下面的 C++ 代码执行后的输出是 ( )
for (int i = -2; i < 2; i++)
if (i % 2)
printf("%d#",i);
{{ select(14) }}
- -1#1#
- -1#0#1#
- -2#-1#1#
- -2#-1#1#2#
15 与下面 C++ 输出效果不一致的代码是 ( )
int i;
for (i = 0; i < 10; i++)
cout << i;
int i = 0;
while (i < 10){
cout << i;
i += 1;
}
int i = 0;
while (i < 10){
i += 1;
cout << i;
}
int i = 0;
while (true){
cout << i;
i += 1;
if (i >= 10)
break;
}
int i = 0;
while (true){
if (i >= 10)
break;
cout << i;
i += 1;
}
{{ select(15) }}
- 1
- 2
- 3
- 4
16 下面 C++ 代码执行后输出是 ( )
int num = 0;
while (num <= 5){
num += 1;
if (num % 3)
continue;
printf("%d#",num);
}
if(num > 5)
printf("%d", num);
{{ select(16) }}
- 3#6#
- 3#6#6
- 1#2#3#4#5#6#
- 1#2#3#4#5#6#6
17 下面 C++ 代码执行后,其输出是 ( )
int cnt = 0;
for (int i = 0; i <5; i++)
for (int j =i; j < 4; j++)
cnt += 1;
cout << cnt;
{{ select(17) }}
- 9
- 10
- 14
- 20
18 漂亮数的定义是:如果 N 能被 M 整除,或者某位是 M,或者 N 的每位数之和能被 M 整除,则说 N 是 M 的漂亮数。如果三个条件都满足,则是完整漂亮数。下面的代码用于判断 N 是否为 M 的完整漂亮数并输出。相关说法正确的是 ( )
int N, M, Flag, Sum, num;
cin >> N >> M;
Sum = 0;
Flag = 0;
while (N != 0){
num = N % 10;
Sum += num;
if (num == M) Flag = 1;
N /= 10;
}
if ((N % M == 0) && (Flag == 1) && (Sum % M == 0))
printf("%d 是 %d 的完整漂亮数", N, M);
else
printf("%d 不是 %d 的完整漂亮数", N, M);
{{ select(18) }}
- 代码能完成题目设定目标
- 在 while 前加 int old_num=N; 并将判断中 N 改为 old_num 可正确判定
- while 中可加 else Flag=0;
- 输入 0 和 3 一定输出 0 是 3 的完整漂亮数
19 阅读下面的 C++ 代码,执行后如输入 5,其输出的字符图形是 ( )
int n,i,j,k;
cin >> n;
for (i = 0; i < n; i++){
for (j = 0; j < n-i-1; j++)
cout << " ";
for (k = 0; k < 2*i+1; k++)
cout << "*";
cout << endl;
}
{{ select(19) }}
- 倒三角星号
- 正三角星号
- 矩形星号
- 菱形星号
20 某学校举办 “十佳歌手大奖赛”,计分规则:去掉一个最高分、一个最低分,求剩余平均分。相关说法正确的是 ( )
float total_score, max_score, min_score, now_score;
for (int i = 0; i < 25; i++){
max_score = 0; min_score = 10; total_score = 0;
for (int j = 0; j < 10; j++){
cin >> now_score;
max_score = max(max_score, now_score);
min_score = min(min_score, now_score);
total_score += now_score;
}
cout << (total_score - max_score - min_score);
}
{{ select(20) }}
- 程序总体逻辑错误,必须排序
- 初始化三行应移到外层循环外
- max/min 可改用 if 或三目运算符实现
- total_score += now_score 不能改为 total_score=total_score+now_score
二、阅读程序(共3题,判断题2分/题+选择题3分/题,共30分)
第一题:
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 2;
if (a > b && (b = a) > 0) {
cout << a + b;
} else {
cout << a - b;
}
return 0;
}
1判断题
#####(1)程序执行过程中,b 的值会被修改为5。( ) {{ select(21) }}
- 对
- 错 #####(2)由于 a > b 为真,&& 后面的 (b = a) 会被执行。( ) {{ select(22) }}
- 对
- 错 #####(3)程序输出结果是10。( ) {{ select(23) }}
- 对
- 错
2选择题
#####(1)程序运行后输出的值是( ) {{ select(24) }}
-
0
-
5
-
10
-
3 #####(2)若将条件改为 a > b && (b = a + 1) > 0,则输出( ) {{ select(25) }}
-
0
-
5
-
11
-
10
第二题:
#include using namespace std; int main() { int x = 1, y = 1; for (int i = 1; i <= 3; i++) { for (int j = 1; j <= i; j++) { if ((i + j) % 2 == 0) { x += j; } else { y += i; } } } cout << x << "," << y; return 0; }
1判断题
#####(1)外层循环执行过程中,内层循环的循环次数依次为1、2、3。( ) {{ select(26) }}
- 对
- 错 #####(2)当 i=2, j=2 时,条件 (i+j)%2==0 成立,执行 x += j。( ) {{ select(27) }}
- 对
- 错 #####(3)程序运行结束后,y 的值为7。( ) {{ select(28) }}
- 对
- 错
2选择题
#####(1)程序运行后输出的结果是( ) {{ select(29) }}
-
5,7
-
6,6
-
4,8
-
7,5 #####(2)若将外层循环条件改为 i <= 4,则输出中 x 的值变为( ) {{ select(30) }}
-
8
-
9
-
10
-
11
第三题:
#include <iostream>
using namespace std;
int main() {
int n = 9, cnt = 0;
while (n > 0) {
if (n % 3 == 0) {
cnt++;
n -= 3;
} else if (n % 2 == 0) {
cnt += 2;
n -= 2;
} else {
cnt++;
n--;
}
}
cout << cnt;
return 0;
}
1判断题
#####(1)程序循环中,当 n=9 时,进入第一个分支,执行后 n 变为6。( ) {{ select(31) }}
- 对
- 错 #####(2)整个循环过程中,cnt 的值一共增加了5次。( ) {{ select(32) }}
- 对
- 错 #####(3)循环结束后,n 的值为0。( ) {{ select(33) }}
- 对
- 错
2选择题
#####(1)程序运行后输出的值是( ) {{ select(34) }}
-
5
-
6
-
7
-
8 #####(2)若将 n % 3 == 0 改为 n % 3 == 1,且其他不变,则输出为( ) {{ select(35) }}
-
5
-
6
-
7
-
8
三、完善程序(共2题,每题5个空,每空3分,共30分)
(1)环保能量球
题目描述 小杨每行走1公里获得1点“环保能量”。此外,每行走 x 公里额外奖励1点能量。已知小杨共行走 n 公里,求总能量点数。 输入格式 第一行一个正整数 t,表示测试数据组数。 每组数据包含两行:第一行 n,第二行 x。 输出格式 每组数据输出一行一个整数,表示总能量。 样例输入: 2 5 2 10 3 样例输出: 7 13 代码(请将下划线处填写正确的选项)
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (__(1)__) {
int n, x;
cin >> n >> x;
int ans = __(2)__;
for (int i = 1; __(3)__; i++) {
ans += 1;
if (__(4)__) {
ans += 1;
}
}
cout << ans << endl;
}
__(5)__;
}
(1)
{{ select(36) }}
- t--
- t-- > 0
- t++
- t
(2)
{{ select(37) }}
- 0
- 1
- n
- x
(3)
{{ select(38) }}
- i < n
- i <= n
- i == n
- i > n
(4)
{{ select(39) }}
- i % x == 0
- i / x == 0
- x % i == 0
- i == x
(5)
{{ select(40) }}
- return
- return 0
- return 1
- return ;
(2)手机电量显示
题目描述 小杨的手机电量百分比为P。显示规则如下: ·若P≤10,显示大写字母R ·若10<P≤20,显示大写字母L·若P>20,直接显示数字P 输入多组数据,每组输出对应的显示信息。 输入格式 第一行一个正整数 T,表示数据组数。 接下来 T 行,每行一个正整数 P。 输出格式 对于每组数据,输出一行显示信息。 样例输入: 5 10 1 20 99 19 样例输出: R R L 99 L 代码(请将下划线处填写正确的选项)
#include <iostream>
using namespace std;
int main() {
int T;
cin >> __(1)__;
for (int i = 0; i < T; __(2)__) {
int P;
cin >> P;
if (__(3)__) {
cout << "R" << endl;
} else if (__(4)__) {
cout << "L" << endl;
} else {
cout << __(5)__ << endl;
}
}
return 0;
}
(1)
{{ select(41) }}
- T
- &T
- "T"
- T,
(2)
{{ select(42) }}
- i++
- i += 1
- i = i + 1
- 以上都对
(3)
{{ select(43) }}
- P < 10
- P <= 10
- P > 10
- P == 10
(4)
{{ select(44) }}
- P <= 20
- P < 20
- P > 20
- P <= 20 && P > 10
(5)
{{ select(45) }}
- "R"
- "L"
- P
- 'P'