#KG001. [黑猫编程C++语法第二部分通关测评] 客观题

[黑猫编程C++语法第二部分通关测评] 客观题

一、选择题(15×2 = 30分)

1.以下关于C++语言标识符的描述中,正确的是( )。

{{ select(1) }}

  • 标识符可以由汉字组成
  • 标识符只能以字母开头
  • 关键字可以作为用户标识符
  • Area与area是不同的标识符

2.判断char类型的变量c1是否为数字字符的正确表达式为( )。

{{ select(2) }}

  • (c1>=0)&&(c1<=9)
  • (c1>= '0' )&&(c1<= '9' )
  • '0'<=c1<='9'
  • (c1>= '0')||(c1<='9')

3.若有语句int a=1,b=2,c=3;则以下值为0的表达式是( )。

{{ select(3) }}

  • 'a' && 'b'
  • a<=b
  • (a>b)||(b<c)
  • (!(a+b)==c&&a)

4.在循环语句的循环体中执行break语句,其作用是( )。

{{ select(4) }}

  • 跳出该循环体,提前结束循环
  • 继续执行break语句之后的循环体各语句
  • 结束本次循环,进行下次循环
  • 终止程序运行

5.执行语句for(int i=10;i>0;i--);后,变量i的值为 ( )。

{{ select(5) }}

  • 10
  • 9
  • 0
  • 1

6.表示关系a<b<=c的C++语言表达式为( )。

{{ select(6) }}

  • (a<b)&&(b<=c)
  • (a<b)AND(b<=c)
  • (a<b<=c)
  • (a<b)&(b<=c)

7.如下程序的输出结果是( )。

image {{ select(7) }}

  • a=2, b=0
  • a=2, b=1
  • a=1, b=1
  • a=1, b=0

8.有以下程序 程序运行时,输入的值在哪个范围才会有输出结果( )。

image {{ select(8) }}

  • 不等于10的整数
  • 大于3且不等于10的整数
  • 大于3或不等于10的整数
  • 小于3的整数

9.已知大写字母A的ASCII编码为65(十进制),则大写字母J的十进制ASCII编码为:( )。

{{ select(9) }}

  • 75
  • 72
  • 73
  • 以上都不是

10.在 8 位二进制补码中,10101011 表示的数是十进制下的( )。

{{ select(10) }}

  • 43
  • -85
  • -43
  • -84

11.设x=true, y=true, z=false, 以下逻辑运算表达式值为真的是( )。

{{ select(11) }}

  • ( x && y ) && z
  • x && ( z || y ) && z
  • ( x && y ) || (z || x )
  • ( y || z) && x && z

12.在C++ 语言中 - 作为单目运算符时表示( ),作为双目运算符时表示( )。

{{ select(12) }}

  • 减号、减号
  • 负号、减号
  • 减号、负号
  • 取反、减号

13.如下程序执行后,输出结果为( )。

image

{{ select(13) }}

  • 20
  • 15
  • 25
  • 3

14.5 & 4 的值是( )。

{{ select(14) }}

  • 20
  • 5
  • 4
  • -1

15.int x = 6, n = 6; x -= ++n; x =___, n =___( )。

{{ select(15) }}

  • -1、7
  • 6、6
  • 6、7
  • 1、6

二、阅读程序(程序输入不超过变量定义的范围;判断正确填√,错误填×;除特殊说明外,判断题1分;选择题 单选5分,多选5分(全选得满分,漏选得3分,选错/多选不得分)总计 40分)

第 1 题

1.#include <iostream>
2.using namespace std;
3.
4.int main() {
5.
6.    int n;
7.    cin >> n;
8.
9.    while (n) {
10.        cout << n % 10;
11.        n /= 10;
12.    }
13.
14.    return 0;
15.}

判断题

① 输入的数值必须是整数,否则程序可能报错( )。

{{ select(16) }}

② 若输入的数字是123456789 输出的数字是 987654321( )。

{{ select(17) }}

③ 将第11行的n/=10改成 n/10,运行结果不受影响( )。

{{ select(18) }}

④ 将第10行的n%10 改成 n%=10,运行结果不受影响( )。

{{ select(19) }}

单选题

⑤ 若输出的数字为 12121 ,则下列说法中正确的是( )。

{{ select(20) }}

  • 输入的数字为12121
  • 输入的数字为 121
  • 输出有误
  • 输入的数字为1122

⑥ 若输入的数字为-128,则下列说法中正确的是( )。

{{ select(21) }}

  • 无输出结果
  • 输出的数字为 -128
  • 输出的数字为 128
  • 输出的数字为 -8-2-1

第 2 题

1.#include <iostream>
2.using namespace std;
3.int main() {
4.    int a = 5;
5.    while (!(a-- > 5)) {
6.        switch (a) {
7.            case 1: a++;   
8.            case 4: a += 4;           
9.            case 5:
10.                a += 5;
11.                break;
12.            default:
13.                a -= 5;
14.        }
15.    }
16.    cout << a << endl;
17.    return 0;
18.}

判断题

① 本题最终输出结果为 13( )。

{{ select(22) }}

② 将11行的 break 去掉输出结果一定会改变( )。

{{ select(23) }}

③ 将第5行 (!(a-- >5)) 改为 a-- <= 5 结果不会改变( )。

{{ select(24) }}

选择题(没有特意说明是多选题目的都是单选题目)

④ 第7行的a++可以用以下哪些语句代替( )(多选题)。

{{ multiselect(25) }}

  • a=a+1;
  • ++a
  • a+1
  • a=1

⑤ switch语句中执行顺序为( )?

{{ select(26) }}

  • case 1 -> defalt
  • case 4 -> case 5 -> break
  • case 2 -> defalt
  • defalt

第 3 题

1.#include<iostream>
2.using namespace std;
3.int main( ){
4.
5.	  int i = 1;
6.	  while (i <= 15)
7.		  if (++i % 3 != 2)
8.			  continue;
9.		  else
10.			  cout << i << " ";
11.	   
12.	   return 0;
13.}

判断题

① 将第7行的++i换成i++输出结果不会改变( )。

{{ select(27) }}

② 第8行的continue可以用break替换掉( )。

{{ select(28) }}

③ 本题目找的数字是1~15中对3取余的结果不为2的数字( )。

{{ select(29) }}

选择题(没有特殊说明为多选题的都是单选题)

④ 将第6行的while( i<=15) 改成以下哪些语句结果不会发生改变(多选)( )。

{{ multiselect(30) }}

  • i<=14
  • i<=16
  • i<=13
  • i<=17

⑤ 本题输出的最终结果是( )

{{ select(31) }}

  • 2 5 8 11 14
  • 2 5 7 9 11 13 15
  • 2 5 8 11 13
  • 2 5 8 11 13 15

三、完善程序(单选题,每小题3分,共计30分)

第1题

(质因数分解)给出正整数n,请输出将n质因数分解的结果,结果从小到大输出。

例如: 输入 n=120 , 程序应该输出 2 2 2 3 5,表示 120=2 × 2 × 2 × 3 × 5。

输入保证 2 ≤ n ≤ 10910^9。提示: 先从小到大枚举变量i,然后用i不停试除n来寻找所有的质因子。

试补全程序。

01 #include <cstdio>
02 using namespace std;
03
04 int n, i;
05
06 int main( ) {
07   scanf("%d", &n); // cin>>n;
08   for(i=①; ②<=n; i++){
09        ③{
10         printf("%d ", i);
11            n=n/i;
12       }
13    }
14    if(④)
15       printf("%d ",⑤);
16    return 0;
17}
  1. ①处应填( )。

    {{ select(32) }}

  • n-1
  • 0
  • 1
  • 2
  1. ②处应填( )。

    {{ select(33) }}

  • n/i
  • n/(i*i)
  • i*i*i
  • i*i
  1. ③处应填( )。

    {{ select(34) }}

  • if(i*i<=n)
  • if(n%i==0)
  • while(i*i<=n)
  • while(n%i==0)
  1. ④处应填( )。

    {{ select(35) }}

  • n>1
  • n <=1
  • i+i<=n
  • i<n/i
  1. ⑤处应填( )。

    {{ select(36) }}

  • 2
  • i
  • n/i
  • n

第2题

下列程序实现的是:求 Sn=a+aa+aaa+...+aa...a之值,其中 a 是一个数字。 例如 2 + 22 + 222 + 2222(此时n=4),n 由键盘输入。

#include <iostream>
using namespace std;
int main() {
    int a, n, count = 1, Sn = 0, Tn = 0;
    cout << "请输入 a 和 n 的值:" << endl;
    cin >> a >> n; 
    while ( ① <= ② ) {
        Tn = ③ ;
        Sn = ④ ;
        a = a * ⑤ ;
        count++;
    }
    cout << "a + aa + aaa+... = " << Sn;
    return 0;
}
  1. ①处应填( )。

    {{ select(37) }}

  • a
  • Tn
  • Sn
  • count
  1. ②处应填( )。

    {{ select(38) }}

  • n
  • Tn
  • a
  • Sn
  1. ③处应填( )。

    {{ select(39) }}

  • Sn
  • a
  • Tn+a
  • Tn
  1. ④处应填( )。

    {{ select(40) }}

  • Sn
  • Sn+Tn
  • Tn
  • a
  1. ⑤处应填( )。

    {{ select(41) }}

  • 10
  • 100
  • 1000
  • 10000