共48道题,当前是第12

初赛真题

01 #include<bits/stdc++.h>
02 using namespace std;
03 int a[6];
04 int change(int a) {
05     a++;
06 }
07 int change1(int & a) {
08     a++;
09 }
10 int main() {
11     int c = 1;
12     for (int i = 1; i <= 5; i++) a[i] = i * 3;
13     int * b = & a[1];
14     change( * b);
15     cout << * b << endl;
16     cout << a[1] << endl;
17     * b++;
18     cout << * b << endl;
19     cout << a[1] << endl;
20     change1( * b);
21     cout << * b << endl;
22     cout << a[1] << endl;
23     * b = c;
24     change(c);
25     cout << * b << endl;
26     cout << c << endl;
27     change1(c);
28     cout << * b << endl;
29     cout << c << endl;
30     return 0;
31 }

1. B。
2. B。
3. B。
4. A。
5. C。
6. D。

代码的输出为 3,3,6,3,7,3,1,1,1,2 。主要是在考察指针与取引用等相关知识。代码首先定义了指针 $b$ 指向了 $a[i]$ ,此时通过 $b$ 和通过 $a[i]$ 对值的改动都会影响彼此,但是函数 change 由于没有取引用,是改变不了外部值的,所以输出都是 $3$ 。后面的过程与前面的类似,就是换成了可以改变传入值的 change1 函数以及取了其他的变量。'),

Question

1. 将第 11 行中 int 换为 long long 后程序依然能通过编译。( )

2. change 与 change1 两个函数等价。( )

3. 将第 23 行换为 b = &c; 输出值不变。( )

4. 将第 13 行 int *b = &a[1]; 换为 int *b=a+1; 输出值不变。( )

5. 输出结果的最大值是。( )

6. 输出结果的乘积是( )