#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) }}
- 正确
- 错误