#1629. 信息素养大赛——小学组模拟卷 1
信息素养大赛——小学组模拟卷 1
信息素养大赛——小学组模拟卷 1
一、单选题(共20题,每题2分,共40分)
1.下列C++变量名中,合法的是( )。
{{ select(1) }}
- 2abc
- _name
- name-1
- Int
2.表达式 15 / 4 的值是( )。
{{ select(2) }}
- 3
- 3.75
- 4
- 3.0
3.表达式 15 % 4 的值是( )。
{{ select(3) }}
- 3
- 1
- 2
- 4
4.下列循环中,会导致无限循环的是( )。
{{ select(4) }}
- for(int i=0; i<10; i++)
- while(1)
- do{} while(0);
- for(int i=10; i>0; i--)
5. 执行以下代码后,输出是( )。
int a=5, b=2;
cout << a/b << " " << a%b;
{{ select(5) }}
- 2 1
- 2.5 1
- 2 2
- 2 0
6. 求1到100之间所有奇数的和,正确的代码是( )。
{{ select(6) }}
- for(i=1; i<=100; i+=2) sum+=i;
- for(i=1; i<=100; i++) if(i%2==0) sum+=i;
- while(i<=100){ sum+=i; i+=2; }
- A和C都正确
7. 从键盘输入一个整数,输出它的个位数,正确的代码是( )。
{{ select(7) }}
- cin>>n; cout<<n/10;
- cin>>n; cout<<n%10;
- cin>>n; cout<<n%100;
- cin>>n; cout<<n/100;
8. 下列选项中,可以正确交换两个整型变量 a 和 b 的值的是( )。
{{ select(8) }}
- a=b; b=a;
- a=a+b; b=a-b; a=a-b;
- temp=a; a=b; b=temp;
- B和C都正确
9. 执行以下代码,输出是( )。
int x=5, y=10;
if(x>y) cout<<x;
else cout<<y;
{{ select(9) }}
- 5
- 10
- 无输出
- 5 10
10. 以下代码的输出是( )。
int cnt=0;
for(int i=0; i<5; i++) cnt+=i;
cout<<cnt;
{{ select(10) }}
- 10
- 0
- 5
- 15
11. 关于 while 循环,下列说法正确的是( )。
{{ select(11) }}
- 循环体至少执行一次
- 当循环条件为真时执行循环体
- 不能嵌套使用
- 必须使用 break 才能退出
12.输出1到10,但跳过3,正确的代码是( )。
{{ select(12) }}
- for(i=1;i<=10;i++){ if(i==3) continue; cout<<i; }
- for(i=1;i<=10;i++){ if(i==3) break; cout<<i; }
- for(i=1;i<=10;i++){ if(i!=3) cout<<i; }
- A和C都正确
13. 表达式 (5 > 3) && (4 < 2) 的值是( )。
{{ select(13) }}
- true
- false
- 1
- 0
14. 执行以下代码,输出是( )。
int a=7, b=3;
cout << (a>b ? a-b : b-a);
{{ select(14) }}
- 4
- -4
- 3
- 7
15. 以下代码输出 # 的个数是( )。
for(int i=0; i<3; i++)
for(int j=0; j<2; j++)
cout<<'#';
{{ select(15) }}
- 3
- 6
- 2
- 5
16. 若 int n=1234; 输出其百位上的数字,正确的代码是( )。
{{ select(16) }}
- cout << n/100%10;
- cout << n%100/10;
- cout << n%1000/100;
- A和C都正确
17. 下列C++注释写法中,合法的是( )。
{{ select(17) }}
- /* comment */
- // comment
- # comment
- A和B
18. 输入20,以下代码的输出是( )。
int n; cin>>n;
int s=0;
for(int i=1; i<=n; i++)
if(i%3==0) s+=i;
cout<<s;
{{ select(18) }}
- 63
- 70
- 90
- 0
19. 执行 cout << (10+20)*2/5; 输出( )。
{{ select(19) }}
- 12
- 12.0
- 10
- 16
20. 关于C++的 main 函数,说法正确的是( )。
{{ select(20) }}
- 一个程序中可以有多个 main 函数
- main 函数必须返回 int 类型
- main 函数不能有参数
- main 函数可以定义为 void main
二、阅读程序(共3题,判断题2分/题+选择题2分/题,共30分)
第一题:
#include <iostream>
using namespace std;
int main() {
int n, sum = 0;
cin >> n;
while (n > 0) {
sum += n % 10;
n /= 10;
}
cout << sum << endl;
return 0;
}
1.判断题
(1)若输入为 0,程序输出 0。( )
{{ select(21) }}
- 对
- 错
(2)若输入为负数,程序会无限循环。( )
{{ select(22) }}
- 对
- 错
(3)若输入 12345,输出 15。( )
{{ select(23) }}
- 对
- 错
2.选择题
(1)当输入为 100 时,输出是( )。
{{ select(24) }}
- 0
- 1
- 10
- 100
(2)若将 while 条件改为 n >= 0,输入 0 时会发生( )。
{{ select(25) }}
- 输出0
- 无限循环
- 输出0然后正常退出
- 编译错误
第二题:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
cout << i;
}
cout << endl;
}
return 0;
}
1.判断题
(1)输入 n=4 时,最后一行输出 4444。( )
{{ select(26) }}
- 对
- 错
(2)若将内层循环条件改为 j <= n,则每行都会输出 n 个数字。( )
{{ select(27) }}
- 对
- 错
(3)若将 cout << i 改为 cout << j,则每行输出 1 2 3 ... i。( )
{{ select(28) }}
- 对
- 错
2.选择题
(1)输入 n=5,输出共有多少行?( )
{{ select(29) }}
- 5
- 15
- 10
- 20
(2)若将外层循环改为 for(int i=n; i>=1; i--),输出形状为( )。
{{ select(30) }}
- 倒三角形
- 不变
- 只有一行
- 编译错误
第三题:
#include <iostream>
using namespace std;
int main() {
int num, maxNum, minNum;
cin >> num;
maxNum = minNum = num;
while (num != -1) {
if (num > maxNum) maxNum = num;
if (num < minNum) minNum = num;
cin >> num;
}
cout << maxNum << " " << minNum << endl;
return 0;
}
1.判断题
(1)若第一个输入就是 -1,则输出 -1 -1。( )
{{ select(31) }}
- 对
- 错
(2)若输入序列为 5 2 8 -1,输出 8 2。( )
{{ select(32) }}
- 对
- 错
(3)将 cin >> num; 移到循环体第一行(保持循环条件不变),程序功能不变。( )
{{ select(33) }}
- 对
- 错
2.选择题
(1)若输入为 3 3 3 -1,输出是( )。
{{ select(34) }}
- 3 3
- 3 0
- 0 3
- 3 -1
(2)若要同时输出平均值,需要增加累加和与计数,以下说法正确的是( )。
{{ select(35) }}
- 只需增加 sum 变量累加 num
- 只需记录数字个数
- 需要同时累加和并记录个数
- 不需要任何修改
三、完善程序(共2题,每题5个空,每空3分,共30分)
(1)商店折扣
题目描述 商店开展促销活动,给出两种优惠方案: · 方案一:购物满x元减y元(满减只能使用一次,不叠加); · 方案二:直接打n折(价格变为原价的n/10)。 小明挑选了价格总和为p元的物品,只能选择其中一种方案。请问他最少需要支付多少钱?结果保留两位小数。 输入格式 一行,四个正整数x , y , n , p , 含义见题目描述。 数据范围:1≤y<x≤100 , 1≤n<10 , 1≤p≤100。 输出格式 一行,一个小数,表示最少支付金额,保留两位小数。 样例输入: 18 2 7 39 样例输出: 13.00 代码(请将下划线处填写正确的选项)
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int x, y, n, p;
____①____
cin >> x >> y >> n >> p;
a1 = p;
if ( ____②____ ) {
a1 = p - y;
}
a2 = p * ____③____;
double ans;
if ( ____④____ ) {
ans = a1;
} else {
ans = a2;
}
printf( ____⑤____ , ans);
return 0;
}
① 处选择: {{ select(36) }}
- double a1, a2;
- int a1, a2;
- float a1; double a2;
- auto a1, a2;
② 处选择: {{ select(37) }}
- p >= x
- p > x
- p <= x
- p < x
③ 处选择: {{ select(38) }}
- n / 10
- n / 10.0
- 0.1 * n
- B和C都正确
④ 处选择: {{ select(39) }}
- a1 < a2
- a1 > a2
- a1 == a2
- a1 <= a2
⑤ 处选择: {{ select(40) }}
- "%lf\n"
- "%.2f\n"
- "%.2lf\n"
- "%d\n"
(2)优美的数字
题目描述 如果一个正整数在十进制下的所有数位都相同,则称为”优美的数字”。例如:6、99、111都是优美的,而123不是。 给定正整数n,求不超过n的优美数字的个数。 输入格式 一行,一个正整数n (1≤n≤2025) 输出格式 一行,一个正整数,表示优美数字的数量。 样例输入1: 6 样例输出1: 6 样例输入2: 2025 样例输出2: 28 代码(请将下划线处填写正确的选项)
#include <iostream>
using namespace std;
int main() {
int n, ans;
____①____
cin >> n;
for (int i = 1; i <= n; i++) {
int t = i;
int d = t % 10;
int flag = 1;
while ( ____②____ ) {
t = t / 10;
if ( ____③____ ) {
flag = 0;
break;
}
}
if ( ____④____ ) {
ans = ans + 1;
}
}
____⑤____
return 0;
}
① 处选择: {{ select(41) }}
- ans = 0;
- ans = 1;
- ans = n;
- int ans = 0;
② 处选择: {{ select(42) }}
- t > 0
- t >= 0
- t != 0
- A和C都正确
③ 处选择: {{ select(43) }}
- t % 10 != d
- t % 10 == d
- t == d
- t / 10 == d
④ 处选择: {{ select(44) }}
- flag
- flag == 0
- flag = 1
- !flag
⑤ 处选择: {{ select(45) }}
- cout << ans;
- printf("%d", ans);
- cout << ans << endl;
- 以上都可以