搜档网
当前位置:搜档网 › C语言-第8章 指针

C语言-第8章 指针

C语言-第8章 指针
C语言-第8章 指针

第8章善于利用指针

一、单项选择题

1.语句int *p;说明了。

A)p是指向一维数组的指针B)p是指向函数的指针,该函数返回一int型数据

C)p是指向int型数据的指针D)p是函数名,该函数返回一指向int型数据的指针

2. 变量的指针,其含义是指该变量的:( )

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

3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是( )

A) pb=&x B) pb=x C) *pb=&x D) *pb=*x

4、已知:int a, *p=&a; 则下列函数调用中错误的是()。

A、scanf(“%d”,&a);

B、scanf(“%d”,p);

C、printf(“%d”,a);

D、printf(“%d”,p);

5. 对于同类型的指针变量,不可能进行的运算是()。

A)- B)= C)+ D)==

6. 下列不正确的定义是()。

A)int *p=&i,i; B)int *p,i; C)int i,*p=&i; D)int i,*p;

7. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:

A)p=q B)*p=*q C)n=*q D)p=n

8. int *p,a=10,b=0;

p=&a; a=*p+b;

执行该程序段后,a的值为

A) 编译出错B) 10C) 11 D) 12

9.有语句:int a[10],;则是对指针变量p的正确定义和初始化。

A)int p=*a; B)int *p=a;C)int p=&a; D)int *p=&a;

10. 若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( )。

A)a[p] B)p[a] C)*(p+2) D)p+2

11. 若指针变量p指向整型数组a[10]的首地址, 即p=a ; 则下列数组元素a[i]的表示方法中正确的是()

A) p+i B)&( a+i) C) *(a+i)D) *(p+i*2)

12. 有如下程序: int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

则数值为9的表达式是

A) *P+9 B) *(P+8) C) *P+=9 D) P+8

13. 若有以下定义,则不能表示a数组元素的表达式是( )。

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

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

14. 已知int a[5],*p=a;下面的叙述中正确的是。

A) p+1与a+1等价B) p[1]与*p等价C) *(p+1)与a+1等价D) p[1]与a++等价

15. 若有以下说明:

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

则数值为4的表达式是

A) *p+4 B) *(p+4) C) *(p+3)D) p+3

16. 下面程序的输出结果是

main()

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

p=a;

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

}

A) 0 B) 1 C) 2D) 输出错误

18. 执行语句char c[10]={ ”abcd”},*pc=c; 后,*(pc+4)的值是()

A) “abcd” B)?\0?C) …d? D) 不确定

19.下列函数的功能是。

void fun(int *p1,int *p2)

{ int p;

p=*p1;*p1=*p2;*p2=p;

}

A) 交换*p1和*p2的值B) 语法正确,但无法交换*p1和*p2的值

C) 交换*p1和*p2的地址D)有语法错误

20. 有如下程序

main()

{ char s[]=“ABCD”, *P;

for(p=s+1; p

该程序的输出结果是

A) ABCD B) A C) B D) BCD

BCD B C CD

CD C D D

D D

21. 请读程序,输出结果为: ( )

#include

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

main()

{ int i,b[4];

int *p=a;

for(i=0;i<4;i++) {b[i]=*p;p++;}

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

}

A) 6B) 8 C) 4 D) 2

二、阅读程序,写出运行结果

1.

# include

main ( )

{ int x[ ] = {10, 20, 30, 40, 50 }; int *p ;

p=x;

printf ( “%d”, *(p+2 ) );

}

运行结果为:

30

2.

#include

main( )

{ char s[]=”abcdefg”;

char *p;

p=s;

printf(“ch=%c\n”,*(p+5));

}

运行结果为:

ch=f

3.

#include

main ( )

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

int x, y, *p;

p=a;

x=*(p+2);

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

}

运行结果为:

1:3

4.

#include

main( )

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

int x, y, *p;

p = &a[0];

x = *(p+2);

y = *(p+4);

printf(“*p=%d, x=%d, y=%d\n”, *p, x, y); }

运行结果为:

*p=1, x=3, y=5

5.

#include

main()

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

int i,*p;

p=a;

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

printf("*%d",a[i]);

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

printf("#%d",*p++);

}

运行结果为:

*1*2*3*4*5#1#2#3#4#5

6.

#include

main()

{ static int a[ ] ={2,5,7};

int s,k,*p=NULL;

s=1;

p=a;

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

s*=*(p+k);

printf("%d\n",s);

}

运行结果为:

70

7.

#include

main()

{int x=2,y,z;

int *px=&x;

*(px+1)=4;

y=*++px;

z=++*px;

printf("\ny=%dz=%d",y,z); }

运行结果为:

y=4z=3

8.

#include

main()

{char a[]="I am a boy.", b[20]; int i;

for(i=0; *(a+i)!='\0'; i++)

*(b+i)= *(a+i);

*(b+i)='\0';

for(i=0; b[i]!='\0'; i++)

printf("%c",b[i]);

}

运行结果为:

I am a boy.

9.

#include

main()

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

int *p;p=a;

printf("%d ",*p);

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

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

printf("%d ",*(p--));

p+=3;

printf("%d %d ",*p,*(a+3));

}

运行结果为:

2 3 3 5 4

10.

#include

char s[]=”ABCD”;

main()

{ char *p;

for(p=s;p

printf(“%c %s\n”,*p,p);

}

运行结果为:

A ABCD

B BCD

C CD

D D

11.

#include

main( )

{ static char a[ ]=”Program”, *ptr;

for(ptr=a, ptr

putchar(*ptr);

}

运行结果为:

Prom

12.

#include

main()

{ ststic int a[ ] ={2,5,7};

int s,k,*p=NULL;

s=1; p=a;

for (k=0;k<3;k++) s*=*(p+k);

printf("%d\n",s);

}

运行结果为:70

13.

#include

main()

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

int *p,i,j,n;

for(p=a[0];p

printf("%d,",*p);

}

运行结果为:

1,2,3,4,5,6,

14.

#include

swap(int *, int *);

main( )

{ int a=5,b=0;

int *p=&a, *q=&b;

printf(“before swap a=%d,b=%d\n”,a,b);

swap(p,q);

printf(“after swap a=%d,b=%d\n”,a,b); }

swap(int *px, int *py)

{

int temp;

temp=*px;

*px=*py;

*py=temp;

printf(“in swap x=%d,y=%d\n”,*px,*py); }

运行结果为:

before swap a=5,b=0

in swap x=0,y=5

after swap a=0,b=5

相关主题