加入收藏   设为首页   联系我们  
首页 课程简介教学大纲教材建设教学梯队课程教案多媒体课件教学视频教学研究课程评价实践教学获奖情况课程练习在线资料参考文献
   同步习题及答案 当前位置:首 页 >> 经典题库 >> 同步习题及答案 >> 正文   
指针练习题
添加时间:2009-05-19  作者:  来源:

 

(一)选择题 

1.已有定义int k=2;int  * ptr1,* ptr2;且ptr1和 ptr2均已指向变量k,下面不能正确执行的赋值语句是:`

A.k=* ptr1+* ptr2;   B. ptr2=k;   C. ptr1=ptr2   D. k=* ptr1*(* ptr2);

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

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

3.如有以下定义int a=5;下面对(1),(2)两个语句的正确解释是:

(1)int * p=&a;(2)* p=a;

A.语句(1)和(2)中的含义相同,都表示给指针变量p赋值      

B.(1)和(2)语句的执行结果,都是把变量a 的地址值赋给指针变量p     

C.(1)在对p 进行说明的同时进行初始化,使p指向a        

  (2)将变量a的值赋给指针变量p

D. 1)在对p 进行说明的同时进行初始化,使p指向a        

  (2)将变量a的值赋于 * p

4.若已定义char s[10];则在下面表达式中不表示s[1]的地址的是:

A.s+1        B.s++        C. &s[0]+1            D. &s[1]

5.若有以下定义,则对a数组元素的正确引用是:

int a[5],* p=a;

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

6. 若有以下定义,则对a数组元素地址的正确引用是:

int a[5],* p=a;

A.p+5       B.*a+1       C.&a+1           D. &a[0]

7.设有如下函数定义:

                   int f(char *s)

                   {char * p=s;

                    while (* p ! =’\0’) p++;

                    return(p-s);

                    }

    如果在主程序中用下面的语句调用上述函数,则输出结果为:

printf(“%d\n”,f(“goodbay!”));

A. 3       B. 6       C. 8           D. 0

8.执行以下程序后,y的值是:

                    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

9.下面各语句行中,能正确进行字符串赋值操作的语句是:

A.char st[4][5]={“ABCDE”};      

B.char s[5]={‘A’, ‘B’,‘C’, ‘D’,‘E’};      

C. char * s;s=“ABCDE”;

        D. char *s;scanf(“%s”,s);

10.请读程序片段:

                 char str[]=“ABCD”,* p=str;

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

   以上程序段的输出结果是:

A. 68       B. 0       C. 字符‘D’的地址           D. 不确定的值

11.以下与int *q[5];等价的定义语句是:

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

12.若有以下定义:

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

   int (*p)[3]=x;

   则能够正确表示数组元素x[1][2]的表达式是:

A.* ((*p+1)[2])        B.(*p+1)+2

C.*(*(p+5))               D.*(*(p+1)+2)

13.以下正确的叙述是:

A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定

B.C语言允许main函数带形参,形参名只能是argc和argv

C.当main函数带有形参时,传给形参的值只能从命令行中得到

D.若有说明:main(int argc,char *argv),则形参argc的值必须大于1

14.语句int (*ptr)();的含义是:

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

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

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

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

15.若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是:

A.(*p)max(a,b);              B.*pmax(a,b);       

C.(*p)(a,b);                   D.*p(a,b);

16.以下程序的功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。请选择填空。

#include <stdio.h>

#include <string.h>

main()

{ char string[100],*p,*q,*r,c;

gets(string);

for(p=string;*p;p++)

  {for(q=r=p;*q;q++)  if (①)  r=q;

     if (②){ c=*r;*r=*p;*p=c;}

}for(p=string;*p;p++)

{ for(q=③;*p= =*q;q++)

strcpy(p,q);}

printf(“result;%s\n”,string);}

①A.*r>*q        B.*r>*p        C.r>q            D.r>p

②A.r= =q        B.r!=q        C.p!=q            D.r!=p

③A.p++          B.p           C.p-1             D.p+1

17.下面程序的功能是将字符串s中的内容按逆序输出,但不改变串中的内容,请选择填空。

              #include <stdio.h>

              main()

             { char s[10]=”hello!”;

               inverp(s);}

               inverp(char *a)

                { if (①)   return 0;

inverp(a+1);

printf(“%c”,②);}

A.*a!=’\0’        B.*a!=NULL        C.!* a           D.!a*= =0

A.*(a-1)            B.*a              C.*(a+1)         D.*(a--)

18. 下面程序的运行结果是:

                  main()

                  { int x[5]={2,4,6,8,10},*p,**pp;

                    p=x;

                    pp=&p;

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

                    printf(“%3d\n”,* *pp);}

A.4   4        B.2   4        C.2   2            D.4   6

(二)、填空题

1.在C程序中,只能给指针变量赋     ①       值和     ②        值。

2.在C程序中,可以通过三种运算来移动指针,它们是:     ①                      ③      

 

习题答案

(一)选择题

1.B  2.B  3.D  4.B  5.D  6.D  7.C  8.C  9.D  10.0  11.C  12.D  13.C 14.C  15.C  16. ① A  ② D   ③  D  17. ① C  ② B     18.B 

(二)填空题

1.① 地址 ② NULL     

2.① 对指针变量加一个整形常量 ② 对指针变量减去一个整形常量 ③ 指针赋值

 

关闭窗口
 
关于我们 | 联系我们 | 友情链接
Copyright © 西北大学信息学院