【GESP】2024年09月C++二级试卷

文摘   2024-11-15 21:08   湖北  

希望大家能持续关注我们,我们经常会分享一些少儿编程相关的资料。

相关资料分享如果有问题,大家可以在文字底部留言

大家方便转发文章到朋友圈的可以帮忙转发一下,非常感谢

青少年软件编程(C++)等级考试试卷(二级)
分数:100 题数:27

一、单选题(共15题,每题2分,共30分)

1、 据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为2μs(微秒)。那么该磁心存储元件相当于现代计算机的( )。

  • A. 内存
  • B. 磁盘
  • C. CPU
  • D. 显示器

2、IPv4版本的因特网总共有( )个A类地址网络。

  • A. 65000
  • B. 200万
  • C. 126
  • D. 128

3、在C++中,下列不可做变量的是( )。

  • A. ccf-gesp
  • B. ccf_gesp
  • C. ccfGesp
  • D.  _ccfGesp

4、在 C++ 中,与 for (int i = 1; i < 10; i++) 效果相同的是( )。

  • A. for (int i = 0; i < 10; i++)
  • B. for (int i = 0; i < 11; i++)
  • C. for (int i = 1; i < 10; ++i)
  • D. for (int i = 0; i < 11; ++i)

5、 在C++中, cout << (5 / 2 + 5 % 3) 的输出是( )。

  • A. 1
  • B. 2
  • C. 4
  • D. 5

6、假定变量a和b可能是整型、字符型或浮点型,则下面C++代码执行时先后输入 -2 和 3.14 后,其输出不可能是( )。[已知字符 '+'、'-'、'=' 的ASCII码值分别是43、45和61]

cin >> a;
cin >> b;
cout << (a + b);
  • A. 1
  • B. 1.14
  • C. 47
  • D. 将触发异常

7、在C++代码中假设N为正整数,则下面代码能获得个位数的是( )。

  • A. N % 10
  • B. N / 10
  • C. N && 10
  • D. 以上选项均不正确

8、下面C++代码执行后的输出是( )。

int i;
for (i = 0; i < 10; i++) 
{
    if (i % 2)
        break;
    cout << "0#";
}
if (i == 10cout << "1#";
  • A. 0#
  • B. 1#
  • C. 0#0#1
  • D. 没有输

9、执行下面C++代码并输入1和0,有关说法正确的是( )。

int a, b;
cin >> a >> b;
if (a && b)
    cout << ("1");
else if (!(a || b))
    cout << ("2");
else if (a || b)
    cout << ("3");
else
    cout << ("4");
  • A. 1
  • B. 2
  • C. 3
  • D. 4

10、 下面C++代码执行后的输出是( )。

int loopCount = 0;
for (int i = 1; i < 5; i += 2)
    loopCount += 1;
cout << (loopCount);
  • A. 1
  • B. 2
  • C. 3
  • D. 5

11、下图是C++程序执行后的输出。为实现其功能,横线处应填入代码是( )。

7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13

//////////////////////////////

int lineNum;
cin >> lineNum;
for (int i = 1; i < lineNum + 1; i++) 
{
    for (int __________________)
        cout << j << " ";
    cout << endl;
}
  • A. j = i; j < i; j++
  • B. j = 1; j < i; j++
  • C. j = i; j < i*2; j++
  • D. j = i+1; j < i+i; j++

12、下面C++代码执行后输出逆序数,如输入 123 则输出 321 。如输入 120 则输出 21 。横线处先后应填入的 代码是( )。

int N;
cin >> N;
int rst = 0;
while (N) 
{
    ____________________;
    ____________________;
}
cout << (rst);
  • A. rst = rst * 10 + N % 10 N = N / 10
  • B. rst += N % 10 N = N / 10
  • C. rst = rst * 10 + N / 10 N = N % 10
  • D. rst += N / 10 N = N % 10

13、下面的C++代码用于输入学生成绩,并根据人数计算出平均成绩,有关说法错误的是( )。

float Sum = 0// 保存总成绩
int cnt = 0// 保存学生人数
while (1
{
    int score;
    cin >> score;
    if (score < 0)
        break;
    cnt += 1;
    Sum += score;
}
cout << "总学生数:" << cnt << "平均分:" << Sum / cnt;
  • A. 代码 while (1) 写法错误
  • B. 如果输入负数,将结束输入,并正确输出
  • C. 如果输入的学生成绩含有小数,程序将无法正常执行
  • D. 变量 int score 初始值不确定,但不影响程序执行

14、以下C++代码判断输入的正整数是否为质数,如果该数字是质数,则输出 YES ,否则输出 NO 。质数是指仅能被1和它本身整除的正整数。请在横线上填写代码。( )

int num, i;
cin >> num;
for (i = 2; i < num; i++)
    if (__________) 
    {
        cout << ("NO");
        break;
    }
if (i == num)
    cout << ("YES");
  • A. num % i
  • B. num % i == 0
  • C. num / i
  • D. num / i == 0

15、一个数如果能被某个数(比如7)整除,或者含有该数,则说该数是某个数的相关数。下面C++代码用于判定输入的数与7是否有关。下列说法错误的是( )。

int N, M;
bool Flag = false;
cin >> N;
M = N;
if (M % 7 == 0)
    Flag = true;
while (!Flag && M) 
{
    if (M % 10 == 7
    {
        Flag = true;
        break;
    }
    M /= 10;
}
if (Flag)
    cout << N << "与7有关";
else
    cout << N << "与7无关";
  • A. 删除break语句不会导致死循环,但有时会导致结果错误
  • B. 删除 M /= 10 将可能导致死循环
  • C. 删除 M = N 并将其后代码中的M变量改为N,并调整输出同样能完成相关功能
  • D. 删除 break 语句不会导致死循环,但有时会影响效率

二、判断题(共10题,每题2分,共20分)

1、小杨最近开始学习C++编程,老师说C++是一门面向对象的编程语言,也是一门高级语言。( )

  • 正确();
  • 错误();

2、 在C++中, cout << (3, 4, 5) 可以输出 3 4 5 ,且每个输出项之间用空格分开。( )

  • 正确();
  • 错误();

3、C++表达式 12 % 10 % 10 的值为2。( )

  • 正确();
  • 错误();

4、 C++语句 cout << rand() << ' ' << rand(); 的第二个输出值较大。( )

  • 正确();
  • 错误();

5、定义C++的 int 类型的变量 ch ,而且值为 '1' ,则语句 cout << int(ch); 的输出为 1 。( )

  • 正确();
  • 错误();

6、下面C++代码执行后将输出10。( )

int i;
for (i = 0; i < 10; i++)
    continue;
if (i == 10)
    cout << i;
  • 正确();
  • 错误();

7、下面C++代码能求整数N和M之间所有整数之和,包含N和M。( )

int N, M, Sum;
cin >> N >> M;
if (N > M) 
{
    int tmp = N;
    N = M, M = tmp;
}
for (int i = N; i < M + 1; i++)
    Sum += i;
cout << Sum;
  • 正确();
  • 错误();

8、将下面C++代码中的 L3 标记的代码行调整为 for (int i = 0; i < 5; i++) 后输出结果相同。( )

int loopCount = 0;
for (int i = 1; i < 5; i++) // L3
    for (int j = 0; j < i; j++)
        loopCount += 1;
cout << loopCount;
  • 正确();
  • 错误();

9、某一系列数据的规律是从第3个数值开始是前两个数之和。下面的代码求第N个数的值,N限定为大于2。( )

int start1; // 第1个数
int start2; // 第2个数
int N; //求N个数的值
int tmp;
cin >> start1 >> start2 >> N;
for (int i = 2; i < N; i++) {
    tmp = start1 + start2;
    start1 = start2;
    start2 = tmp;
}
cout << start2;
  • 正确();
  • 错误();

10、下面C++代码执行时如果输入 2024 ,则输出是 4202 。( )

int N, flag = 0;
cin >> N;
while (N) 
{
    if (!flag) cout << N % 10;
    N /= 10;
    flag = (flag + 1) % 2;
}
  • 正确();
  • 错误();

三、编程题(共2题,共50分)

1、数位之和

【提交】

https://www.luogu.com.cn/problem/B4036

【问题描述】

小杨有 个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是 的倍数。

小杨想请你编写一个程序判断 个正整数哪些是美丽数字。

【输入描述】

第一行包含一个正整数 ,代表正整数个数。

之后 行,每行包含一个正整数。

【输出描述】

对于每个正整数,如果是美丽数字则输出 Yes,否则输出 No

【样例输入1】

3
7
52
103

【样例输出1】

Yes
Yes
No

【提示】

的各位数字之和为 ,是 的倍数。 的各位数字之和为 ,是 的倍数。 的各位数字之和为 ,不是 的倍数。

对于全部数据,保证有

2、小杨的 N 字矩阵

【提交】

https://www.luogu.com.cn/problem/B4037

【问题描述】

小杨想要构造一个 字矩阵( 为奇数),这个矩阵的从左上角到右下角的对角线、第 列和第 列都是半角加号 + ,其余都是半角减号 - 。例如,一个 字矩阵如下:

+---+
++--+
+-+-+
+--++
+---+

请你帮小杨根据给定的 打印出对应的 字矩阵。

【输入描述】

第一行包含一个正整数

【输出描述】

输出对应的 字矩阵。

【样例输入1】

5

【样例输出1】

+---+
++--+
+-+-+
+--++
+---+

【提示】

对于全部数据,保证有 为奇数。



NOIP编程小助手
NOIP编程小助手,发布免费的学习资料和大家共同学习交流!
 最新文章