#1330. GESP-C++四级(2023-12)

GESP-C++四级(2023-12)

CCF GESP C++ 四级 (2023 年 12 月)

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

1. 下面有关函数参数的说法,正确的是:

{{ select(1) }}

  • 函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值不变。
  • 函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值将随子函数一样改变而改变。
  • 函数参数传递时,主函数如果将参数的地址传递给子函数,若子函数将参数值改变,主函数当中的参数值将不改变。
  • 函数参数传递可以不满足子函数的参数个数要求。

2. 下面C++代码执行后,输出的是:

int arr[10] = {1};
string strArr = "chen a dai";
cout << strArr[arr[1]] << endl;

{{ select(2) }}

  • chen
  • c
  • chenadai
  • dai

3. 下面C++代码最后执行后输出是:

int fun1(int *n) {
    return *n * *n;
}
int main() {
    int arr[10] = {2};
    arr[1] = fun1(arr);
    cout << arr[1] << endl;
}

{{ select(3) }}

  • 1
  • 2
  • 3
  • 4

4. 下面C++代码执行后的结果是:

int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < 3; i++) {
    for (int j = 2; j >= 0; j--) {
        cout << arr[i][j] << " ";
    }
    cout << endl;
}

{{ select(4) }}

  • A
  • B
  • C
  • D

5. 下面C++代码执行后输出是:

int arr[3] = {1, 2, 3};
int *p = NULL;
p = arr;
p++;
cout << *p << endl;

{{ select(5) }}

  • 1,2,3
  • 1
  • 2
  • 3

6. 如果变量 x 的地址是 0x6ffe14,下面C++代码执行以后输出的是:

int *p = NULL;
int x = 2;
p = &x;
p++;

{{ select(6) }}

  • 0x6ffe11
  • 0x6ffe14
  • 0x6ffe18
  • 0x6ffe15

7. 在C++中,执行下面代码后,输出的是:

int point(int *p) {
    return *p * *p;
}
int main() {
    int a = 20;
    int *p = &a;
    *p = point(p);
    cout << *p << endl;
}

{{ select(7) }}

  • 400
  • 200
  • 20
  • 100

8. 下列C++语句执行以后结果是 true 的是:

{{ select(8) }}

  • 3 && false
  • 5 && 2
  • 101 && 000
  • 4 && true

9. 在如下的C++代码中实现了对字符串中出现的26个字母的个数统计,横线处应填入是:

string str = "HELLO CHEN A DAI";
int strlen = str.length();
char alpha[26] = {65};
int cnt[26] = {0};
for (int i = 1; i < 26; i++) {
    __________________// 横线处应填入代码
}
for (int i = 0; i < 26; i++) {
  cout << alpha[i] << "";
}
cout << endl;
for (int i = 0; i < 26; i++) {
    for (int j = 0; j < strlen; j++) {
        if (alpha[i] == str[j]) cnt[i]++;
    }
}
for (int i = 0; i < 26; i++) {
    cout << cnt[i] << "";
}

{{ select(9) }}

  • alpha[i] = alpha[i - 1] + 1;
  • alpha[i] = alpha[i] + 1;
  • alpha[i + 1] = alpha[i] + 1;
  • alpha[i - 1] = alpha[i] + 1;

10. 下面C++代码执行后生成的文件其字节数为。

ofstream fout;
fout.open("1.txt");
for(int i=1;i<=10;i++){
  if(i%5==0){
    int x = 6;
    fout<<x;
  } else {
    char ch='A';
    fout<<ch ;
}

{{ select(10) }}

  • 10
  • 16
  • 40
  • 24

11. 下列C++代码输入 1,2,3,4 执行后,将输出的是( )。

string str="";
cin>>str;
int strlen=str.length();
for(int i=0;i<strlen;i++){
  if (str[i]<='9' && str[i]>='0'){
    cout<<str[i];
  } else {
    cout<<"#";
  }
}

{{ select(11) }}

  • 1#4#
  • 1#3#
  • 1#2#3#4#
  • 1#2#3#4

12.以下C++代码用于实现每个整数对应的因数,如 输入 12 ,则输出 1 2 3 4 6 12 ; 如输入18 , 则输出 1 2 3 6 9 18 横线处应填入代码是 ( ) 。

int n;
for(int i=1;ik=n;i++)
{
    ____________
    {
    cout<<i<<" " ;
    }
}

{{ select(12) }}

  • if(n%i==0)
  • if(n/i==0)
  • if(n%i!=0)
  • if(n/i!=0)

13. 某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的?

{{ select(13) }}

  • 麦克风
  • 扬声器
  • 油量表
  • 传感器

14. 现代计算机是指电子计算机,它所基于的是()体系结构。

{{ select(14) }}

  • 艾伦·图灵
  • 冯·诺依曼
  • 阿塔纳索夫
  • 埃克特-莫克利

15. 输入一个正整数 N(N >= 7),想找出它所有相邻的因数对,比如,输入 12,因数对有(1,2)、(2,3)、(3,4)。下面哪段代码找不到所有的因数对?

{{ select(15) }}

  • for (i = 1; i < N; i++) if (!(N % i) && !(N % (i + 1))) printf("(%d,%d)\n", i, i + 1);
  • for (i = 2; i < N; i++) { if (!(N % i) && !(N % (i + 1))) printf("(%d,%d)\n", i, i + 1); }
  • for (i = 2; i < N / 2; i++) { if (!(N % (i - 1)) && !(N % i)) printf("(%d,%d)\n", i - 1, i); }
  • for (i = 1; i < N / 2; i++) { if (!(N % i) && !(N % (i + 1))) printf("(%d,%d)\n", i, i + 1); }

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

16. C++的内置函数 sort() 支持数组的局部排序。例如 int a = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}, 可以用 sort(a, a + 5), 排序成 {6, 7, 8, 9, 10, 5, 4, 3, 2, 1}。

{{ select(16) }}

17. 用递归法求 n的阶乘,时间复杂度是 O(n)。

{{ select(17) }}

18. [(1,2)*2]*3 在C++中是合法的表达式。

{{ select(18) }}

19. 在下面的 C++代码中,将对 1.txt 文件写入 hello。

ifstream filein;
ofstream fileout;
filein.open("1.txt");
fileout<<"hello";

{{ select(19) }}

20. 文本文件1.txt第1行由01234共5个字符组成其间没有空格,当用C++代码正常打开文件成功并执行如下代码以后,第1行长度为5。

ifstream filein;
int buff;
filein.open("1.txt");
filein>>buff;
cout<<buff<<endl;

{{ select(20) }}

21. 执行C++代码 cout << (5 || 2); 后将输出 1。

{{ select(21) }}

22. 在 C++ 中,两个字符串相加的运算符为 + 相当于字符串的合并运算。下面 C++ 代码执行后,将输出 chenadai。

string a="chen";
string b="a";
string c="dai";
string name=a+b+c;
cout<<name<<endl;

{{ select(22) }}

23. C++内置函数 sort() 可以对整数、浮点数、字符数组进行从大到小,从小到大,局部排序。

{{ select(23) }}

24. 小杨最近在准备考 GESP,他用的 Dev C++ 来练习和运行程序,所以 Dev C++ 也是一个小型操作系统。

{{ select(24) }}

25. 任何一个 while 循环都可以转化为等价的 for 循环。

{{ select(25) }}