#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;
  • 以上都可以