程序设计基础-江西师范大学

程序设计基础-江西师范大学

开课学校:江西师范大学授课老师:柯胜男中国大学MOOC

第11周——指针的孪生兄弟

1、【单选题】设有定义语句 int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是

A. for(i=0;i<6;i++)printf("%2d",*(p++));
B. for(i=0;i<6;i++)printf("%2d",*(p+i));
C. for(i=0;i<6;i++)printf("%2d",*p++);
D. for(i=0;i<6;i++)printf("%2d",(*p)++);

参考答案: 请先登录

2、【单选题】假设有下面定义语句: float a[10]; float *p=a; 则p++相当于是加上()个字节

A. sizeof(float)
B. 1个字节
C. sizeof(p)
D. sizeof(a)
E. sizeof(float*)

参考答案: 请先登录

3、【单选题】若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为

A. *(*(a+i)+j)
B. *(a+j*n+i)
C. *(a+i*n+j)
D. *(*a+i)+j

参考答案: 请先登录

4、【不定项选择题】下列说法错误的是()。

A. 指针指向数组元素时,指针算术运算才有意义
B. 两个指针指向同一个数组时,指针相减才有意义
C. 指针的算术运算允许通过对指针变量重复自增来访问数组的元素
D. p++就是将指针变量p加上一个字节

参考答案: 请先登录

5、【不定项选择题】下面关于表达式(*p)++和*p++的含义分析说明中,错误的是

A. (*p)++指的是先取出p指向的存储单元中的内容,然后将取出的数值加1,此时p不再指向原来的存储单元。
B. (*p)++指的是先取出p指向的存储单元中的内容,然后将取出的数值加1,而p仍然指向原来的存储单元。
C. *p++则指的是先取出p指向的存储单元中的内容,然后将p值加1,此时p不再指向原来的存储单元。
D. 表达式(*p)++和*p++具有不同的含义,(*p)++并没有修改指针p的指向,而*p++则修改了指针p的指向。

参考答案: 请先登录

6、【单选题】在以下程序段中的空白处填写适当的表达式或语句,使程序能正确引用c数组元素。 #include <stdio.h> int main() { int c[4][5],(*p)[5],i,j,d=0; for(i=0;i<4;i++) { for(j="0;j<5;j++)" c[i][j]="d;" d++; printf("%4d",c[i][j]); } printf("\n"); p="c;" printf("%d,%d\n",____________); return 0;>

A. *(p[0]+2),c[0][2]
B. *(p+1)+3,c[1][3]
C. *(p+3),c[0][3]
D. p+1,c[0][1]

参考答案: 请先登录

7、【单选题】char (*p)[10];该语句定义了一个

A. 指向含有10个元素的一维字符型数组的指针变量p
B. 指向长度为10的字符串的指针变量p
C. 有10个元素的指针数组p,每个元素可以指向一个字符串
D. 有10个元素的指针数组p,每个元素存放一个字符串

参考答案: 请先登录

8、【单选题】二维数组a有m行n列,则在a[i][j]之前的元素个数为()

A. j*n+i
B. i*n+j
C. i*n+j-1
D. i*n+j+1

参考答案: 请先登录

9、【不定项选择题】如下程序的执行结果是 #include <stdio.h> int main() { int a[ ][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i=1,j=2; p=a; printf("%d\n",*(*(p+i)+j)); return 0; }

A. 13
B. 9
C. 11
D. 17

参考答案: 请先登录

10、【单选题】下面给出的选项中,能定义为一个指针数组的语句是

A. int *ptr[5];
B. int (*ptr)[5];
C. int *(ptr[5]);
D. int ptr[5];

参考答案: 请先登录

11、【不定项选择题】有int *p[10];以下说法错误的是________。

A. p++操作是合法的
B. p是数组名
C. p是一个指针数组
D. p中每个元素都是一个指针变量

参考答案: 请先登录

12、【单选题】设有以下定义:int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};int (*ptr)[3] = a;int *p = a[0];则以下能够正确表示数组元素a[1][2]的表达式是

A. (*ptr + 1) + 2
B. *((*ptr + 1) + 2)
C. *(*(p + 5))
D. *(*(ptr + 1) + 2)

参考答案: 请先登录

13、【单选题】设有语句“int array[3][4];”,则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是( )。

A. array[i][j]
B. *(*(array+i)+j)
C. *(array[i]+j)
D. *(array+i*4+j)

参考答案: 请先登录