C语言 第7章 指针(答案)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章指针

一、选择题

1、变量的指针,其含义是指变量的(B)

A)值B)地址C)名D)一个标志

2、若有以下定义:

int x[10], *pt=x;

则对x数组元素的正确引用是(B)

A) *&x[10] B) *(x+3) C) *(pt+10) D) pt+3

3、若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是(B)

A)*p B)x[5] C)*(p+1) D)*x

4、设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是(D)

A)float *p=1024; B)int *p=(float x);

C)float p=&x; D)float *p=&x;

5、有以下程序

main(){

int n,*p=NULL;

*p=&n;

printf(“Input n:”);

scanf(“%d”,&p);

printf(“output n:”);

printf(“%d\n”,p);

}

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是(A)

A)int n,*p=NULL; B)*p=&n; C)scanf(“%d”,&p)D)printf(“%d\n”,p);

6、若有说明:int *p,m=5,n;以下正确的程序段是(D)

A)p=&n; B)p=&n;

scanf(“%d”,&p); scanf(“%d”,*p);

C)scanf(“%d”,&n); D)p=&n;

*p=n; *p=m;

7、若有语句int * p1, a=4;和p1=&a;下面均代表地址的一组选项是(C)

A)a, p1, *&a B)&*a, &a, *p1 C)* &p1, * p1, &a D)&a, &* p1, p1

8、下面程序的输出结果是(D)

main(){

int a=25,*p;

p=&a;

printf("%d\n",++*p);

}

A)23 B)24 C)25 D)26

9、下列函数的功能是

(A)

int fun (char *x){

char *y=x;

while(*y++);

return(y-x-1);

}

A)求字符串的长度B)比较两个字符串的大小

C)将字符串x复制到字符串y C)将字符串x连接到字符串中y后面

10、设有如下定义

char *aa[2]={"abcd","ABCD"};

则以下说法正确的是(D)

A)aa数组的元素的值分别是“abcd”和“ABCD”。

B)aa是指针变量,它指向含有两个数组元素的字符型一维数组。

C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址。

D)aa数组的两个元素中各自存放了字符'a'和'A'的地址。

11、若有以下定义和语句

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则不能表示a数组元素的表达式是(B)

A)*p B)a[10] C)*a D)a[p-a]

12、下面定义不正确的是(B)

A)int *p; B)int p[n]; C)int *p(); D)int (*p)();

13、有下面程序(假设int 类型为2个字节)

main()

{

int a[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n",p+9); }

该程序有两个printf函数,如果第一个printf输出的是194,则第二个printf输出的结果是(D)

A)203 B)204 C)1a4 D)1a6

14、下面程序的输出结果是(D)

main(){

char p1[10]="abc", *p2="ABC", str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n",str);}

A)xyzabcABC B)zabcABC C)yzabcABC D)xyabcABC

15、有以下程序

main(){

char str[]="xyz",*ps=str;

while(*ps) ps++;

for(ps--;ps-str>=0;ps--) puts(ps);}

执行后输出结果是(C)

A) yz<回车>xyz B) z<回车>yz

C) z<回车>yz<回车>xyz D) x<回车>xy<回车>xyz

16、下面程序的输出结果是(C)

main()

{

int a[]={2,4,6,8,10};

int y=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)

y+=*(p+x);

printf("%d\n",y); }

A)17 B)18 C)19 D)20

17、以下程序输出的结果是(A)

void fun1(char *p){

char *q;

q=p;

while(*q!=’\0’)

{

(*q)++;q++;}

}

main()

{

char a[]={“Program”},*p;

p=&a[3];

fun1(p);

printf(“%s\n”,a);

}

A)Prohsbn B)Prphsbn C)Progsbn D)Program

18、设有如下定义:

int (*ptr)();

则以下叙述中正确的是(C)。

A)ptr是指向一维数组的指针变量

B)ptr是指向int型数据的指针变量

C)ptr是指向函数的指针,该函数返回一个int型数据

D)ptr是一个函数名,该函数的返回值是指向int型数据指针

19、若有以下定义:int a[2][3]={2,4,6,8,10,12};

则以下描述正确的是( )

A)*(a+1)为元素a[1][0]的指针B)a[1]+1为元素a[1][1]的指针

C)*(a+1)+2为元素a[1][2]的指针D)*a[1]+2的值是12

20、以下程序的运行结果是(A)

#define NULL 0

main()

{int a[]={1,2,3,4,5,6,7,8,9,10,11,12};

int *p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*q);

}

A)运行后报错B)6 6 C)6 11 D)5 5

21、若有以下说明:

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

int (*p)[4]=w;

相关文档
最新文档