#KS004. 基础语法测试

基础语法测试

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

  1. 下面C++代码可以执行,有关说法正确的是( )。
1  double PI = 3.1415926;
2  cout << (PI);

{{ select(1) }}

  • 为了方便初学者,cout << (PI) 和 cout << (pi) 效果相同
  • cout << (PI) 修改为 coyut << (Pi)能正常执行
  • PI不能做变量名
  • 将程序中全部PI都改写为Pai能正常执行,不会报错
  1. C++表达式 3 * 3 % 2 的值为( )。 {{ select(2) }}
  • 3
  • 27
  • 2
  • 1
  1. 下面C++代码的相关说法,正确的是()。
1  int N = 0;
2  cin >> N;
3  cout << (N);

{{ select(3) }}

  • 输入 10 输出 10
  • 输入 3.14 报错
  • 输入 ABC 报错
  • 输入 -10 报错
  1. 下面C++代码执行时,其说法正确的是()。
1  int M = 0, N = 0;
2  cin >> M; cin >> N;
3  if (N > M) cout << (M - N);
4  else cout << (N - M);

{{ select(4) }}

  • 如果输入一个正数和一个负数,其输出结果肯定是大于0
  • 不管是负整数、正整数亦或0,其结果肯定是大于等于0
  • 如果N和M是相等的整数,将不会有输出
  • 如果N和M输入带有小数点的数,可以按小数计算,因为int可以存储小数
  1. 下面C++代码执行后的输出是()。
1  int i, tnt = 1;
2  for (i = 0; i < 5; i++)
3      tnt *= i;
4  printf("%2d%2d\n", tnt, i);

{{ select(5) }}

  • 20 5
  • 10 5
  •   0 4
  •   0 5
  1. 下面C++代码的相关说法,正确的是()。
1  int i;
2  for (i = 1; i < 10; i++) {
3  		if (i % 2 == 0) {
4  			 continue; // L1
5  		}
6  		else
7  			cout << i << "#";
8  }
9  cout << i << "END";

{{ select(6) }}

  • 上述代码执行后,其输出是1#3#5#7#9#9END
  • 删除else后的执行效果与当前代码相同
  • 删除else且将cout<<i<<"#"移入L1行下面,则执行效果与当前代码相同
  • 在cout<<i<<"END"前增加判断if(i>10),其执行效果与当前代码相同
  1. 一个正整数的每位都是个位数,称为数位,最高位非0。下面的C++代码用于求正整数的所有数位之和,简称数位和。如123的各数位分别是1、2、3,则其数位和为1+2+3,结果为6。为实现该目标,横线处应填写的代码是()。
1  int N; cin >> N; int tnt = 0;
2  while (N != 0) {
3  		________;
4  		________;
5  }
6  cout << "N的数位和为:" << tnt;

{{ select(7) }}

  • tnt += N / 10和N /= 10
  • tnt += N % 10和N /= 10
  • tnt += N / 10和N %= 10
  • tnt = tnt + N % 10和N %= 10
  1. 下面的 C++ 代码段正常执行后其输出的数字图形是()。
1  for (int i = 1; i < 5; i++) {
2  		for (int j = 1; j < i + 1; j++)
3  			 cout << j;
4  		cout << endl;
5  }

{{ select(8) }}

  • 1
    12
    123
    1234
  • 1
    22
    333
    4444
  • 1
    12
    123
  • 1
    21
    321
    4321
  1. 下列选项中,与C++表达式!(x > 5 && y <= 10)等价的是()。

    {{ select(9) }}

  • x <= 5 && y > 10
  • x > 5 || y <= 10
  • x <= 5 || y > 10
  • !x > 5 && !y <= 10
  1. 下面 C++ 代码段执行后,其输出是()。
1  int i, j, cnt = 0;
2  for (i = 0; i < 5; i++) {
3      i = -i;
4  		for (j = i; j < -i; j++)
5          cnt += 1;
6      i = -i;
7  }
8  cout << cnt;

{{ select(10) }}

  • 5
  • 15
  • 20
  • 30
  1. 某学校举办“校园演讲比赛”,每位选手由8位评委打分(分数为 0~10 的整数),且每位评委必须打分。计分规则:若至少有5位评委给出大于等于6分,则成绩有效,最终得分为所有8位评委的总分;如给出低于6分的评委数量超过5位,则记为0分。以下核心程序段依次输入8个分数,并计算最终得分。横线处应填入()
1  int score;
2  int total_score = 0; // 所有分数之和
3  int high_count = 0; // ≥6分的评委数量 
4  for (int i = 0; i < 8; i++) {
5      cout << "请输入评委分数: ";
6      cin >> score;
7      ____________________;
8      if (score >= 6)
9          ________________;
10 }
11 if (high_count >= 5)
12     cout << total_score;
13 else
14     cout << 0;

{{ select(11) }}

  • total_score += score和high_count += 1
  • total_score += score和high_count += score
  • high_count += 1和total_score += score
  • total_score *= score和high_count *= 1
  1. 模拟“字符串加密”:字符串保证由小写字母构成,规则为“每个字符 ASCII 码+ 3,若超过z (122)则从a重新开始”,以下代码中正确的条件判断是:()。
1  string str; cin >> str;
2  for (int i = 0; i < str.length(); i++) {
3      // 需补充条件: 
4      _______________________
5      else {
6          str[i] += 3;
7      }
8  }

{{ select(12) }}

  • if (str[i] > 122) str[i] = str[i] + 3 - 26;
  • if (str[i] > 122) str[i] = str[i] - 26;
  • if (str[i] + 3 > 122) str[i] = str[i] - 26;
  • if (str[i] + 3 > 'z') str[i] = 'a' + (str[i] + 3 - 'z') - 1;
  1. 执行climb(6) 的返回值为()。
1  int climb(int n){ 
2      if(n <= 2) return n; 
3      int a = 1, b = 2, c = 0; 
4      for(int i = 3; i <= n; i++){ 
5          c = a + b; 
6          a = b; 
7          b = c; 
8      } 
9      return c; 
10 }

{{ select(13) }}

  • 8
  • 13
  • 5
  • 10
  1. 下面代码试图把数组按升序进行“插入排序”,横线处应填写()。
1  void ins(int a[], int n){ 
2      for(int i = 1; i < n; i++){ 
3          int key = a[i]; 
4          int j = i - 1; 
5          while(j >= 0 && __________){ 
6              a[j + 1] = a[j]; 
7              j--; 
8          } 
9          a[j + 1] = key; 
10     } 
11 }

{{ select(14) }}

  • a[j] < key
  • a[j] > key
  • a[j + 1] > key
  • a[j] == key
  1. 定义int a[3][4] = {{1,2,3,4},{5,6}},则a[1][2]的值是()。

{{ select(15) }}

  • 2
  • 5
  • 6
  • 0

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

  1. C++语句cout << ('4' % '2' == '2' * '2' % 2);执行后的输出是1。

{{ select(16) }}

  • 正确
  • 错误
  1. 执行下面的C++代码段,如果N是基本数据类型,则语句 cout << (N); 将被执行 0 次或无数次(即死循环)。
1  cin >> N; 
2  while(N)
3      cout << (N);

{{ select(17) }}

  • 正确
  • 错误
  1. 下面的 C++ 代码段可正常执行,删除 continue 不影响执行效果。
1  int i; 
2  for (i = 0; i < 10; i++){ 
3      i += 1; 
4      continue; 
5  }
6  cout << (i);

{{ select(18) }}

  • 正确
  • 错误
  1. 执行下面的C++代码后将输出2500。
1  int cnt = 0; 
2  for (int i = 1; i < 100; i++) 
3      cnt += i++;
4  cout << cnt;

{{ select(19) }}

  • 正确
  • 错误
  1. 定义int arr[5] = {1,2,3};则arr[3]的值为0,arr[5]是合法下标。

{{ select(20) }}

  • 正确
  • 错误
  1. strcmp(s1, s2)函数比较的是两个字符串的长度大小。

{{ select(21) }}

  • 正确
  • 错误
  1. 局部变量在整个程序中都可以使用。

{{ select(22) }}

  • 正确
  • 错误
  1. 结构体变量初始化时,必须按成员变量声明的顺序进行赋值。

{{ select(23) }}

  • 正确
  • 错误
  1. int a[3][4];定义的数组,所有元素默认初始化为0。

{{ select(24) }}

  • 正确
  • 错误
  1. 下列 C++ 代码执行后将输出1#4#9#16#16。
1  int i, j, cnt = 0;
2  for (i = 1; i < 5; i++) {
3      for (j = 1; j < i + 1; j++)
4          if (i * j % 10 == 0)
5              break;
6      if (j >= i + 1)
7          cout << (i * j) << "#";
8  }
9  if(i >= 5)
10     cout << (i * j);

{{ select(25) }}

  • 正确
  • 错误