C语言程序设计 第九章 指针.docx

上传人:b****7 文档编号:16226624 上传时间:2023-07-11 格式:DOCX 页数:16 大小:21.81KB
下载 相关 举报
C语言程序设计 第九章 指针.docx_第1页
第1页 / 共16页
C语言程序设计 第九章 指针.docx_第2页
第2页 / 共16页
C语言程序设计 第九章 指针.docx_第3页
第3页 / 共16页
C语言程序设计 第九章 指针.docx_第4页
第4页 / 共16页
C语言程序设计 第九章 指针.docx_第5页
第5页 / 共16页
C语言程序设计 第九章 指针.docx_第6页
第6页 / 共16页
C语言程序设计 第九章 指针.docx_第7页
第7页 / 共16页
C语言程序设计 第九章 指针.docx_第8页
第8页 / 共16页
C语言程序设计 第九章 指针.docx_第9页
第9页 / 共16页
C语言程序设计 第九章 指针.docx_第10页
第10页 / 共16页
C语言程序设计 第九章 指针.docx_第11页
第11页 / 共16页
C语言程序设计 第九章 指针.docx_第12页
第12页 / 共16页
C语言程序设计 第九章 指针.docx_第13页
第13页 / 共16页
C语言程序设计 第九章 指针.docx_第14页
第14页 / 共16页
C语言程序设计 第九章 指针.docx_第15页
第15页 / 共16页
C语言程序设计 第九章 指针.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计 第九章 指针.docx

《C语言程序设计 第九章 指针.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 第九章 指针.docx(16页珍藏版)》请在冰点文库上搜索。

C语言程序设计 第九章 指针.docx

C语言程序设计第九章指针

一、 选择题

1、 指针是一种____

A、 标识符B、 变量C、 内存地址D、 运算符

2、 显示指针变量P中的值,可以使用命令_____

A、 Printf(“%d”,p);B、 Printf(“%d”,*p);

C、 Printf(“%d”,*p);D、 Printf(“%d”,p);

3、 为指针变量P输入整型变量i的地址,可以使用命令____

A、 Scanf(“%p”,&p);B、 *p=i;C、 P=&I;D、 *p=&I;

4、 若有定义void*p;int*q;float*r,下面操作不对的是____

A、 p=q;B、 q=r;C、 p=r;D、 r=p;

5、 若有说明#definem20intn=10;下面定义不正确的是______

A、 Floats[m];B、 Floats[m*10];C、 Floats[m+n];D、 Floats[m+10];

6、 若有定义inta[]={1,2,0};请问a[a[a[0]]]=______

A、 0     B、1      C、2       D、3

7、 若有chars[10],*p=s;则下面表达式正确的是_____

A、 s=p+s;B、 p=s+10;C、 s[2]=p[4];D、 p=s[0];

8、 定义整型指针变量p和q,下面操作不正确的是_______

A、 Int*p,q=null;B、 Int*p,q=null,null;C、 Int*p,*q=null,null;

D、 Int*p,*q=null;

9、 若有定义inta[]={1,2,3},b[3]={1,2,3};,请问a==b_______

A、 不能比较B、 结果为真C、 结果为假D、 结果不确定

10、以下程序有错,错误的原因是()。

main()

{int*p,i;char*q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

.

.

.}

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句

C)q没有指向具体的存储单元,所以*q没有实际意义

D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句

11、已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。

A)k=*ptr1+*ptr2;B)ptr2=k;C)p1=*p2;D)*p1=p2;

12、变量的指针,其含义是指该变量的()。

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

13、若已定义inta=5;下面对

(1),

(2)两个语句的正确解释是()。

(1)int*p=&a;

(2)*p=a;

A)语句

(1)和

(2)中的*p含义相同,都表示给指针变量p赋值

B)

(1)和

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

C)

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

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

D)

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

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

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

A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point

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

voidmain()

{inta=5,*p1,**p2;

p1=&a,p2=&p1;

(*p1)++;

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

A)5B)4C)6D)不确定

16、若有说明:

int*p,m=5,n;以下正确的程序段是()。

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

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

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

*p=n;*p=m

17、若有说明:

int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。

A)p1=&m;p2=&p1;B)p1=&m;p2=&n;*p1=*p2;C)p1=&m;p2=p1D)p1=&m;*p2=*p1;

18、已有变量定义和函数调用语句:

inta=25;print_value(&a);下面函数的正确输出结果是()。

voidprint_value(int*t)

{print(“%d\n”,++*x);}

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

19、下面判断正确的是()。

A)char*a=”china”;等价于char*a;*a=”china”;

B)charstr[10]={“china”};等价于charstr[10];str[]={“china”};

C)char*s=”china”;等价于char*s;s=”china”;

D)charc[4]=”abc”,d[4]=”abc”;等价于charc[4]=d[4]=”abc”;

20、设char*s=”\ta\017bc”;则指针变量s指向的字符串所占的字节数是()。

A)9B)5C)6D)7

21、下面程序段中,for循环的执行次数是()。

char*s=”\ta\018bc”;

for(;*s!

=’\0’;s++)printf(“*”);

A)9B)5C)6D)7

22、下面能正确进行字符串赋值操作的是()。

A)chars[5]={“ABCDE”};B)char[5]={‘A’,’B’,’C’,’D’,’E’};

C)char*s;s=”ABCDE”;D)char*s;scanf(“%s”,s);

23、下面程序段的运行结果是()。

char*s=”abcde”;

s+=2;printf(“%d”,s);

A)cdeB)字符’c’C)字符’c’的地址D)无确定的输出结果

24、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。

A)c=*p1+p2;B)p2=cC)p1=p2D)c=*p1*(*p2);

25、有下面的程序段:

chats[]=”china”;char*p;p=s;

则下列叙述正确的是()。

A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等D)*p与s[0]相等

26、下面程序的运行结果是()。

#include

#include

main()

{char*p1,*p2,str[50]=”abc”;

p1=”abc”;p2=”abc”;

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

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

A)abcabcabcB)bcabcabcC)aabcabcD)cabcabc

27、下面程序的运行结果是()。

#include

main()

{charstr[]=”cdalb”;

abc(str);

puts(str);}

abc(char*p)

{inti,j;

for(i=j=0;*(p+i)!

=’\0’;i++)

if(*(p+i)>=’d’){*(p+j)=*(p+i);j++;}

*(p+j)=’\0’;}

A)dalbB)cdC)dlD)c

28、下面程序运行结果是()。

#include

fun(char*p)

{inti,j;charts[81];

for(i=0,t=0;p[i]!

=’\0’;i+=2)

if(!

isspace(*p+i)&&(*(p+i)!

=’a’))

ts[t]=’\0’;

strcpy(p,ts);}

main()

{charstr[81]={“abcdefg”};

fun(str);

puts(str);}

A)abcdegB)bcdeC)ABCDED)BCDE

29、若有以下定义,则对a数组元素的正确引用是()。

inta[5],*p=a;

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

30、若有以下定义,则对a数组元素地址的正确引用是()。

inta[5],*p=a;

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

31、若有定义:

inta[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数值的正确引用为()。

A)*(*(i+j)+j)B)(a+i)[j]C)*(a+i+j)D)*(a+i)+j

32、若有定义:

inta[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数地址的正确引用为()。

A)*(a[i]+j)B)(a+i)C)*(a+j)D)a[i]+j

33、若有以下定义和语句,则对a数组元素地址的正确引用是()。

inta[2][3],(*p)[3];

p=a;

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

34、若有以下定义和语句,则对a数组元素地址的正确引用是()。

inta[2][3],(*p)[3];

p=a;

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

35、若有定义:

inta[5];则a数组中首元素的地址可以表示为()。

A)&aB)a+1C)aD)&a[1]

36、若有定义:

int(*p)[4];则标识符p()。

A)是一个指向整型变量的指针B)是一个指针数组名

C)是一个指针,它指向一个含有四个整型元素的一维数组D)定义不合法

37、若有以下定义和赋值语句,则对s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为()。

ints[2][3]={0},(*p)[3];

p=s;

A)*(*(p+i)+j)B)*(p[i]+j)C)(p+i)+jD)(*(p+i))[j]

38、若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的非法引用为()。

intb[2][3]={0},(*p)[3];

p=b;

A)*(*(p+i)+j)B)*(p[i]+j)C)(p+i)+jD)(*(p+i))[j]

39、以下与int*q[5];等价的定义语句是()。

A)intq[5]B)int*qC)int*(q[5]);D)int(*q)[5]

40、设有以下程序段:

charstr[4][10]={“first”,“second”,“third”,“fourth”},*strp[4];

intn;

for(n=0;n〈4;n++)strp[n]=str[n];

若k为int型变量且0〈=k〈4,则对字符串的不正确引用是()。

A)strpB)str[k]C)strp[k]D)*strp

二 、填空题

1、 二级指针是存放一级指针的__________

2、 指针变量虽然都是存放指针,但____不同

3、 空指针名称是_______,表示没有指针的一种状态

4、 函数名和_______名可以作为指针常量

5、 不同类型的指针变量的赋值必须________

6、以下的运行结果是【】。

#include

main()

{intI,k;

for(I=0;I<4;I++);

{k=sub(&I);

printf(“%3d”,K);}

printf(“\n”);}

sub(int*s)

{staticintt=0;

t=*s+t;}

7、以下的运行结果是【】。

#include”string.h”

int*P;

main()

{inta=1,b=2,c=3;

p=&b;

pp(a+c,&b);

printf(“(!

)%d%d%d\n”,a,b,*p);}

pp(inta,int*b)

{intc=4;

p=*b+c;

a=*p-c;

printf(“

(2)%d%d%d\n”,a,*b,*p);}

8、下面程序段的运行结果是【】。

chars[80],*sp=”HELLO!

”;

sp=strcpy(s,sp);

s[0]=’h’;

puts(sp);

9、下面程序运行结果是【】。

chars[20]=”abcd”;

char*ssp=s;

sp++;

puts(strcat(sp,”ABCD”));

10、下面程序段的运行结果是【】。

chars1=”AbcdEf”,s2=”aB”;

s1++;

t=(strcmp(s1,s2)>0);

print(“%d\n”,t);

11、下面程序段的运行结果是【】。

char[]=”12345’,*p;

ints=0;

for(p=a;*p!

=`\0`;p++)s=10*s+*p-`0`;

printf(“%s”,P+5);

12、下面程序段的运行结果是【】。

harstr[]=”abc\0def\0ghi”,*p=str;

printf(“%s”,p+5);

13、下面程序段的运行结果是【】。

char*p=”PDP1-0”;

inti,d;

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

{d=isdigit(*(p+ii));

if(d!

=0)printf(“%c*(p+i));}

14、当运行以下程序时,从键盘输入bookbook

表示回车,表示空格),则下面程序段运行的结果是【】。

chara1[80],a2[80],*s1=a1,*s2=a2;

gets(s1);gets(s2);

if(!

strcmp(s1,s2))printf(“*”);

elseprintf(“#”);

printf(“%d”,strlen(strcat(s1,s2)));

15、下面程序段的运行结果是【】。

chara[]=”123456789”,*p;

inti=0;

p=a;

while(*p)

{if(i%2==0)p=’*’;

p++;i++;}

puts(a)

16、下面程序的运行结果是【】。

#include

s(char*s)

{char*p=s;

while(*p)p++;

return(p-s);}

main()

{char*a=”abcd”;

inti;

i=s(a);

printf(“%d”,i);}

17、下面程序的运行结果是【】。

#include

main()

{char*strc(charstr1,charstr2);

chars1[80]=”computer”,s2[]=”language”*p;

pt=strc(s1,s2);

printf(”%s\n”,pt);

char*strc(char*strl,char*str2)

{char*p;

for(p=strl;*p!

=’\0’}P++);

do{‘p++=*str2++;}while(“str2!

=‘\o’);

*p=’\o’;

return(strl);}

18、当运行以下程序时.从键盘输入thisisatext.表示回车),则下面程序的运行结果是【】。

#include

#defineTURE1

#defineFALSE0

intchange(char0c,intstatus)

main()

{intflag=TURE;

charch;

do{ch=getchar();

flag=change(&ch,flag);

putchar(ch);

}while(ch!

’.’);

printf(“\n”);}

{intchange(char*c,intstatus)

{if(*c==’’)returnTRUE

else

{if(status8&*c<=’z’&&*c>=’a’)*c+=’A’-‘a’;}

returnFALSE;}

19、若有定义:

inta[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是【】,

*(a[1]+2)的值是【】。

20、若有以下定义和语句:

inta[4]={0,1,2,3},*p;

p=&a[2];

则*--p的值是【】,

21、若有以下定义和语句:

ints[2][3]={0},(*p)[3];

p=s;则p+1表示数组【】。

22、若有定义:

inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是【】,*(*(a+1)+0))的值是【】。

23、若有以下定义和语句:

int*p[3],a[6],I;

for(i=0;i<3;i++)p[i]=&a[2*i];

则*p[0]引用的是a数组元素【】;*(p[1]+1)引用的是a数组元素【】。

24、若有定义:

inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[3],k;则下面程序段的输出是【】。

for(k=0;k<3;k++)q[k]=&a[k*4];

printf(“%d)\n”q[2][3]);

25、若m数组的元素和它们的值如下所示:

数组元素:

m[0]m[1]m[2]m[3]m[4]m[5]m[6]m[7]m[8]m[9]元素中的值:

941282107513

则数组元素m[m[4]+m[8]]的值是【】,*m+m[9]的值是【】,m[*(m+4)]的值是【】。

26、若有以下定义和语句,则下面各个符号的正确含义分别是:

(例如对于符号&a[2][1],应该写成:

是数组元素a[2][1]的地址)。

inta[3][4],(*q)[4];

q=a;

*(q+2):

【】,*(q+1)+2:

【】,*(*q+2):

【】

27、若有以下定义和语句,在程序中引用数组元素x[i]的四种形式是:

【】,【】,【】和【】(假设i已正确说明并赋值)。

intx[10],*p;p=x;

28、若有定义:

intm[10][6];在程序中引用数组元素m[i][j]的四种形式是:

【】,【】,【】和【】(假设i、j已正确说明并赋值)。

29、若有以下定义和语句,在程序中可通过指针数组p,用*(p[i]+j)等四种形式引用数组元素s[i][j](假设i、j已正确说明并赋值);另三种形式分别是:

【】,【】和【】。

ints[10][6],*p[10];

for(i=0;i<10;i++)p[i]=s[i];

30、设main函数的说明为:

main(intargc,char*argv[]),且有命令行为:

FILE1123代表回车),则argc的值是【】,argv[1]的值是【】。

31、若有以下输入(代表回车),则下面程序的运行结果是【】。

2

main()

{inta[2][3]={2,4,6,8,10,12};

int(*p)[3],i,j;

p=a;

scanf(“%d,%d”,&i,&j);

printf(“a[%d][%d]=%d\n”,i,j,*(*(p+i)+j));}

三、 编程

1、 输入3个整数,按由小到大的顺序输出。

2、 写一个函数,求一个字符串的长度。

在main函数中输入字符串,并输出其长度。

 

参考答案

一、 选择题

题号

1

2

3

4

5

6

7

8

9

10

答案

C

D

C

B

C

A

C

D

D

D

题号

11

12

13

14

15

16

17

18

19

20

答案

B

B

D

D

C

D

C

D

C

C

题号

21

22

23

24

25

26

27

28

29

30

答案

C

C

C

B

D

C

C

D

D

D

题号

31

32

33

34

35

36

37

38

39

40

答案

A

D

C

C

C

C

A

C

C

A

二、填空题

1、 单元地址2、 基类型3、 Null4、 数组5、 显式类型变换

6、01367、266,1668、hELLO!

9、bcdABCD10、111、12345

12、ef13、1*0*14、#915、*2*4*6*8*16、517、compuerlanguage

18、ThsISATest19、12,1220、121s[1][0]的地址22、8,823、a[0],a[3]24、2425、8,12,1226、是数组元意a[2][0]地址,是数组元意a[1][2]地址,是数组元素a[0][2]的值27、*p(p+i),p[i],*(x+i),x[i]28、(*(m+i))[j],*(m[i]+j),*(&m[0][0]+6*i+j),*(*(m+i)+j)29、p[i][j](*(p+i))[j]*(*(p+i)+j)30、4,131、a[1][2]=12

三、 编程题

1、 main()

    {intn1,n2,n3;

     int*p1,*p2,*p3;

     printf(“inputthreeintegersn1,n2,n3:

”);

    scanf(“%d,%d,%d”,&n1,&n2,&n3);

    p1=&n1;

    p2=&n2;

    p3=&n3;

    if(n1>n2)swap(p1,p2);

    if(n1>n3)swap(p1,p3);

    if(n1>n3)swap(p2,p3);

    printf(“now,theorderis:

%d,%d,%d\n”,n1,n2,n3);    }

    swap(int*p1,int*p2)

{intp;     p=*p1;*p1=*p2;*p2=p; }

2、 main()

{intlen;

char*str[20];

 printf(“inputstring:

”);

scanf(“%s”,str);

 len=le

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2