C++ 能力测试题(GESP 二/三级)

117 阅读2分钟

C++ 能力测试题(GESP 二/三级)

总分:100 分  建议用时:60 分钟


一、选择题(每题 2 分,共 12 分)

选择正确答案,把字母填在括号里。

  1. int a = 7 / 2; 的结果是:( )
    A. 3.5  B. 3  C. 4  D. 编译错误
  2. 下列哪一个是合法的 for 循环语句:( )
    A. for (i=0; i<5; i++)
    B. for int i = 0 to 5
    C. for i in range(5)
    D. for(i < 5; i++)
  3. int a = 5, b = 10;,则 a > b ? a : b; 的值是:( )
    A. 5  B. 10  C. true  D. false
  4. 在函数定义中 int add(int x, int y)int 表示:( )
    A. x 是整数  B. y 是整数  C. 函数返回整数  D. 函数内部变量是整数
  5. 8 的二进制表示是( )
    A. 00001000 B. 1000 C. 11111000 D. 00000111
  6. 位运算中,表达式 (5 & 3) 的结果是( )
    A. 1 B. 7 C. 0 D. 8

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

写 “T” 或 “F”。

  1. ( )C++ 的数组下标从1开始。
  2. ( )函数可以没有返回值。
  3. ( )while (true) 是死循环。
  4. ( )int a = 2.9; 中 a 的值是 2。
  5. ( )一个文件中可以定义多个函数。

三、程序阅读与改错(每题 5 分,共 10 分)

1. 阅读下列程序,写出输出结果:

#include <iostream>
using namespace std;

int main() {
    int x = 4;
    while (x-- > 0) {
        cout << x << " ";
    }
    return 0;
}

输出为:______


2. 改错题:请指出下面程序的错误,并写出修改后的代码:


#include <iostream>
using namespace std;

int max(int a, int b)
{
    if (a > b)
        return a
    else
        return b;
}

四、函数填空题(共 10 分)

填空,使函数功能正确:


// 判断一个数是否为偶数
bool isEven(int x) {
    return x % ____ == ____;
}

五、程序设计题(共 50 分)

  1. 求数组最大值(10 分)
    输入一个数组长度 n(n ≤ 100)和 n 个整数,输出其中最大值。

  2. 判断是否为回文数(10 分)
    输入一个整数,判断它是否正着反着都一样,例如:121、1221。

  3. 成绩等级统计(10 分)
    输入若干个成绩(0~100,以 -1 结尾),输出以下各段人数:

    • 优秀(≥90)
    • 良好(80~89)
    • 中等(60~79)
    • 不及格(<60)
  4. 字符串反转(10 分)
    输入一个不带空格的字符串,输出其反转后的字符串。

  5. 自定义函数:冒泡排序(10 分)
    编写函数 void bubbleSort(int a[], int n) 对整数数组进行升序排序,并在主函数中调用。