指针习题

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

指针习题

(1) 若有说明“int n=2,*p=&n,*q=p;”,则以下非法的赋值语句为。

A. p=q;

B. *p=*q;

C. n=*q;

D. p=n;

(2) 若程序已包含头文件stdio.h,以下选项中正确运用指针变量的程序段是。

A. int i=NULL;

B. float *f=NULL;

scanf("%d",i); *f=10.5;

C. char t='m',*c=&t;

D. long *L;

*c=&t; L='\0';

(3) 设有定义“int A,*pA=&A;”,以下scanf语句中能正确为变量A读入数据的是。

A. scanf("%d",pA);

B. scanf("%d",A);

C. scanf("%d",&pA);

D. scanf("%d",*pA);

(4) 已有定义:int i,a[10],*p;,则合法的赋值语句。

A. p=100;

B. p=a[5];

C. p=a[2]+2;

D. p=a+2;

(5) 有以下程序

main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%d\n", s[2]);

}

执行后输出的结果是。

A. 随机值

B. 0

C. 5

D. 6

(6) 有以下程序

main()

{ int a[3][2]={0},(*ptr)[2],i,j;

for(i=0;i<2;i++)

{ ptr=a+i; scanf("%d",ptr); ptr++;}

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

{ for(j=0;j<2;j++) printf("%2d", a[i][j]);

printf("\n");

}

}

若运行时输入:1 2 3<回车>,则输出结果是 D 。

A. 产生错误信息

B. 1 0

C. 1 2

D. 1 0

2 0

3 0 2 0

0 0 0 0 3 0

(7) 有以下程序

void sort(int a[],int n)

{ int i,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]

}

main()

{ int aa[10]={1,2,3,4,5,6,7,8,9,10},I;

sort(aa+2, 5);

for(i=0;i<10;i++) printf("%d,", aa[i]);

printf("\n");

}

程序运行后的输出结果是 C 。

A. 1,2,3,4,5,6,7,8,9,10,

B. 1,2,7,6,3,4,5,8,9,10,

C. 1,2,7,6,5,4,3,8,9,10,

D. 1,2,9,8,7,6,5,4,3,10,

(8) 若有以下定义和语句:

int s[4][5],(*ps)[5];

ps=s;

则对s数组元素的正确引用形式是 B 。

A. ps+1

B. *(ps+3)

C. ps[0][2]

D. *(ps+1)+3

(9) 有以下程序

main()

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

while(*ps) ps++;

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

}

执行后输出结果是 C 。

A. yz

B. z

C. z

D. x

xyz yz yz xy

xyz xyz

(10) 下列选项中正确的语句组是 D 。

A. char s[8]; s={"Bei jing"};

B. char *s; s={"Bei jing"};

C. char s[8]; s="Bei jing";

D. char *s; s="Bei jing";

(11) 已定义以下函数

fun(char *p2, char *p1)

{ while((*p2=*p1)!= '\0') {p1++;p2++;}}

函数的功能是 A 。

A. 将p1所指字符串复制到p2所指的内存空间

B. 将p1所指字符串的地址赋给指针p2

C. 对p1和p2两个指针所指字符串进行比较

D. 检查p1和p2两个指针所指字符串中是否有'\0'

(12) 程序中若有如下说明和定义语句

char fun(char *);

main()

{ char *s="one",a[5]={0},(*f1)()=fun,ch;

}

以下选项中对函数fun的正确调用语句是 A 。

A. (*f1)(a);

B. *f1(*s);

C. fun(&a);

D. ch=fun*f1(s);

(13) 有以下程序

int *f(int *x, int *y)

{ if(*x<*y)

return x;

else

return y;

}

main()

{ int a=7,b=8,*p,*q,*r;

p=&a;

q=&b;

r=f(p,q);

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

}

执行后输出结果是 B 。

A. 7,8,8

B. 7,8,7

C. 8,7,7

D. 8,7,8

(14) 有以下程序段

main()

{ int a=5,*b,**c;

c=&b;b=&a;

}

程序在执行了“c=&b;b=&a;”语句后,表达式**c的值是 C 。

A. 变量a的地址

B. 变量b中的值

C. 变量a中的值

D. 变量b的地址

(15) 设有以下定义和语句

int a[3][2]={1,2,3,4,5},*p[3];

p[0]=a[1];

则*(p[0]+1)所代表的数组元素是 C 。

A. a[0][1]

B. a[1][0]

C. a[1][1]

D. a[1][2]

(16) 有以下程序

point(char *p){p+=3;}

main()

{ char b[4]={'a', 'b', 'c', 'd'},*p=b;

point(p); printf("%c\n",*p);

}

程序运行后的输出结果是 D 。

A. a

B. b

C. c

D. d

相关文档
最新文档