#6084. gesp四级真题分类三:数组

gesp四级真题分类三:数组

三、数组(共18题)

1. 下面C++代码执行后,输出的是( )。

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

{{ select(1) }}

  • chen
  • c
  • chen a dai
  • dai

2. 下面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(2) }}

  • 123 456 789
  • 123456789
  • 3 2 1 6 5 4 9 8 7
  • 9 8 7 6 5 4 3 2 1

3. 对二维数组 int arr[3][16];则 arr[1] 占用内存的大小为( )字节。

{{ select(3) }}

  • 4
  • 16
  • 48
  • 64

4. 对二维数组 int arr[3][16];若 arr 的地址是 0x28cbc0,则 arr[1] 的值是( )。

{{ select(4) }}

  • 0x28cbc4
  • 0x28cbd0
  • 0x28cc0
  • 不确定

5. 下面C++代码执行后输出是( )。

int main() {
    float fnum[10]={1.1};
    fnum[1]=foo(fnum);
    cout << fnum[0]+fnum[1] << endl;
}
// 假设 foo 函数返回 int(*f*2) 即 2.2 转为 2

{{ select(5) }}

  • 1
  • 1.1
  • 3
  • 3.1

6. 一个二维数组定义为 int arr[3][4];(假设一个 int 变量占 4 个字节),则 int arr[0] 占用( )个字节的内存。

{{ select(6) }}

  • 3
  • 4
  • 12
  • 16

7. 在C++中,()正确声明了一个3行4列的二维数组。

{{ select(7) }}

  • int arr[3,4];
  • int arr[3][4];
  • int arr[4][3];
  • int arr(3,4);

8. 假定整型是32位,对一个2行3列的二维整数数组array,假设数组第一个元素在内存中的地址为0x7ffee4065820,则第2行第2个元素的地址 &array[1][1] 为( )。

int array[2][3] = { {0,1,2}, {3,4,5} };

{{ select(8) }}

  • 0x7ffee4065824
  • 0x7ffee4065828
  • 0x7ffee406582c
  • 0x7ffee4065830

9. 下面()正确定义二维数组。

{{ select(9) }}

  • int a[3][];
  • int a[][];
  • int a[][4];
  • int a[][2] = {{1,2},{1,2},{3,4}};

10. 假设 int arr[2][3] = {{1,2,3},{4,5,6}}; 则 arr[1][2] 的值是( )。

{{ select(10) }}

  • 2
  • 3
  • 5
  • 6

11. 下面()正确定义了二维数组。

{{ select(11) }}

  • int arr[3,4];
  • int arr[3][4];
  • int arr(3,4);
  • int a[3-4];

12. 下面的函数接收一个3行4列的二维数组并输出其中元素,则横线上不能填写( )。

void printArray( ) {
    for (int i = 0; i < 3; ++i)
        for (int j = 0; j < 4; ++j)
            std::cout << arr[i][j] << " ";
}

{{ select(12) }}

  • int arr[3][4]
  • int arr[1][4]
  • int (*arr)[4]
  • int **arr

13. 在C++中,int arr[3][4] 和 int *arr = new int[12] 均可模拟一个3行4列的二维数组。关于这两种方式,下面说法错误的是( )。

{{ select(13) }}

  • int arr[3][4] 在栈上分配空间,适合数组较小的情况;
  • int *arr = new int[12] 在堆上分配空间,数组较大时也适用;
  • 这两种方式申请的内存空间都是连续的。
  • 这两种方式申请的内存都能自动释放。

14. 小杨用一个二维数组表示棋盘,其中1表示有棋子,0表示没有棋子。他想知道第2行第3列有没有棋子,可采用的代码是:( )。

int a[3][4] = {
    {1,0,1,0},
    {0,1,0,1},
    {1,1,0,0}
};

{{ select(14) }}

  • cout<<a[1,2]<<endl;
  • cout<<a[1][2]<<endl;
  • cout<<a(1,2)<<endl;
  • cout<<a{1}{2}<<endl;

15. 执行完下面的代码后,sum 的值是( )。

int arr[2][3][2] = {
    {{1,2}, {3,4}, {5,6}},
    {{7,8}, {9,10}, {11,12}}
};
int sum = 0;
for(int i = 0; i < 2; i++)
    for(int j = 0; j < 3; j++)
        for(int k = 0; k < 2; k++)
            if((i+j+k) % 2 == 0)
                sum += arr[i][j][k];

{{ select(15) }}

  • 36
  • 39
  • 78
  • 30

16. 以下关于数组的描述中,()是错误的。

{{ select(16) }}

  • 数组名是一个指针常量
  • 随机访问数组的元素方便快捷
  • 数组可以像指针一样进行自增操作
  • sizeof(arr) 返回的是整个数组 arr 占用的字节数

17. 给定如下定义的数组 arr,则 *(*(arr+1)+2) 的值是( )。

int arr[2][3] = {{1,2,3},{4,5,6}};

{{ select(17) }}

  • 2
  • 5
  • 4
  • 6

18. 下面代码将二维数组 arr 传递给函数 f,函数内部用 arr[i][j] 访问元素,函数参数声明为 int arr[][4] 是错误的。(判断题)

void f(int arr[][4], int rows) { }
int main() { int arr[3][4] = {}; f(arr, 3); }

{{ select(18) }}

  • 正确
  • 错误