CH6指针练习题及答案Word格式文档下载.docx

上传人:b****4 文档编号:7890748 上传时间:2023-05-09 格式:DOCX 页数:16 大小:21.24KB
下载 相关 举报
CH6指针练习题及答案Word格式文档下载.docx_第1页
第1页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第2页
第2页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第3页
第3页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第4页
第4页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第5页
第5页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第6页
第6页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第7页
第7页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第8页
第8页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第9页
第9页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第10页
第10页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第11页
第11页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第12页
第12页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第13页
第13页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第14页
第14页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第15页
第15页 / 共16页
CH6指针练习题及答案Word格式文档下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

CH6指针练习题及答案Word格式文档下载.docx

《CH6指针练习题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《CH6指针练习题及答案Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。

CH6指针练习题及答案Word格式文档下载.docx

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

char*s1="

AbcdEf"

*s2="

aB"

s1++;

t=(strcmp(s1,s2)>

0);

t);

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

charstr[]="

abc\0def\0ghi"

char*p=str;

%s"

p+5)

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

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

p=&

a[1];

则++(*p)的值是()。

10、若有定义:

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

则*(&

a[0][0]+2*2+1)的值是(),*(a[1]+2)的值()。

11、若有定义:

inta[]={2,4,6,8,10,12},*p=a;

则*(p+1)的值是(),*(a+5)的值是()。

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

a[2];

则*--p的值是()。

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

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

则(*(p+1)+2)的值是()。

14、若有定义:

则a[1][0]的值是(),*(*(a+1)+0)的值是()。

15、若有定义:

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];

q[2][3]);

16、若有以下输入:

1,2<

CR>

(<

代表回车),则下面程序的运行结果是()。

{inta[2][3]={2,4,6,8,10,12},(*p)[3],i,j;

p=a;

scanf("

%d,%d"

&

i,&

j);

*(*(p+i)+j);

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

{char*a[]={"

P"

"

C"

B"

L"

},(**p)[];

intj;

p=a+3;

for(j=3;

j>

=0;

j--)printf("

*(p--));

18、以下程序的执行结果是()。

{char*p1,*p2,str[20]="

xyz"

p1="

abcd"

p2="

ABCD"

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

str);

19、若输入的值分别是135,下面程序的运行结果是()

{inta=0,i,*p,sum;

a;

for(i=0;

=2;

i++){scanf("

p);

sum=s(p);

sum=%d,"

sum);

}}

s(int*p)

{intsum=10;

sum=sum+*p;

return(sum);

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

chars[20]="

char*sp=s;

sp++;

puts(strcat(sp,"

));

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

chara[]="

12345"

*p;

ints=0;

for(p=a;

*p!

='

\0'

p++)s=10*s+*p-'

0'

s);

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

123456789"

inti=0;

p=a;

while(*p){if(i%2==0)*p='

*'

p++;

i++;

}puts(a);

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

{char*str[]={"

Pascal"

Clanguage"

Dbase"

Cobol"

};

char**p;

intk;

p=str;

k++)printf("

%s,"

*(p++));

二、选择题

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

voidsub(intx,inty,int*z)

{*z=y-x;

{inta,b,c;

sub(10,5,&

a);

sub(7,a,&

b);

sub(a,b,&

c);

%4d,%4d,%4d\n"

a,b,c);

A)5,2,3B)-5,-12,-7

C)-5,-12,-17D)5,-2,-7

2、执行以下程序后,b的值为()

{intb,k=4,m=6,*p1=&

k,*p2=&

m;

b=(-*p1)/(*p2)+7;

b);

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

3、下面程序应能对两个整型变量的值进行交换。

以下正确的说法是()

{inta=10,b=20;

a,b);

swap(&

a,&

swap(intp,intq)

{intt;

t=p;

p=q;

q=t;

A)该程序完全正确

B)该程序有错,只要将语句swap(&

中的参数改为a,b即可

C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句为变)即可

D)以上说法都不正确

4、设*p,i;

以下正确的语句是()。

A)*p=&

i;

B)i=p;

C)i=*p;

D)p=2*p+1;

5、设chars[10];

inti=1;

以下正确的表达式是()。

A)[i+2]B)*(s+i)C)*(&

s+i)D)*((s++)+i)

6、设有语句:

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

以下对a数组的元素值不正确的引用是()。

A)a[p-a]B)*(&

a[i])C)p[i]D)*(a[0]+1)

7、设有说明int(*ptr)[M];

其中ptr是()。

A)M个指向整型变量的指针B)指向M个整型变量的函数指针

C)一个指向具有M个整型元素的一维数组的指针

D)具有M个指针元素的一维指针数组,每一元素只能指向整型量

8、如下程序的执行结果是()。

 main()

{inti;

char*s="

a\\\\\n"

s[i]!

\n'

i++)printf("

%c"

*(s+i));

A)aB)a\C)a\\D)a\\\\

9、有四组对指针变量进行操作的语句,以下判断正确的选项是()

(1)int*p,*q;

q=p;

inta,*p,*q;

*p=*q=&

(2)inta,*p,*q;

q=&

p=*q;

inta=20,*p;

*p=a;

(3)inta=b=0,*p;

p=&

b=*p;

inta=20,*p,*q=&

*p=*q;

(4)inta=20,*p,*q=&

intp,q;

p;

A)

(1)正确,其余错B)

(1),(4)正确,其余错

C)(3)正确,其余错D)以下结论都不正确

10、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()

{int*p,*q,a,b;

*p);

........}

A)*p表示的是指针变量p的地址

B)*p表示的是变量a的值,而不是变量a的地址

C)*p表示的是指针变量p的值

D)*p只能用来说明p是一个指针变量

11、若有以下定义,则*(p+5)表示()。

inta[10],*p=a;

A)元素a[5]的地址B)元素a[5]的值C)元素a[6]的地址D)元素a[6]的值

12、若有定义:

int*p[4];

则标识符p()。

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

C)是一个指针,它指向一个含有四个整型元素的一维数组。

D)说明不合法

13、若有以下定义,且0<

=i<

6,则正确的赋值语句是()。

ints[4][6],t[6][4],(*p)[6];

A)p=t;

B)p=s;

C)p=s[i];

D)p=t[i];

inta[4][6];

则能正确表示a数组中任一元素a[i][j](此处0<

4,0<

=j<

6)地址的表达式是()

A)&

a[0][0]+6*i+jB)&

a[0][0]+4*j+IC)&

a[0][0]+4*i+jD)&

a[0][0]+6*j+i

15、以下选项中,对指针变量p的正确操作是()

A)inta[5],*p;

B)inta[5],*p;

C)inta[5];

int*p=a=1000D)inta[5];

int*p1,*p2=a;

*p1=*p2;

16、若有以下定义,且0<

5,则对数组a元素的非法引用是()

inta[5],*p=a;

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

a+i)

17、设有以下定义:

char*cc[2]={"

1234"

5678"

则正确的叙述是()

A)cc数组的两个元素中各自存放了字符串"

和"

的首地址

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

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

D)cc数组元素的值分别是"

18、若有以下定义:

intx[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)+2C)*(*(p+5))D)*(*(p+1)+2)

19、以下正确的叙述是()

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

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

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

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

20、main函数的正确说明形式是()

A)main(intargc,char**argv[])

B)main(intabc,char*abv)

C)main(intargc,charargv)

D)main(intc,char*v[])

21、以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入。

{

intx[10],*p1,*p2,k;

10;

k++)scanf("

x+k);

for(p1=x,p2=x;

p1-x<

p1++)if(*p1>

*p2)p2=p1;

MAX=%d,INDEX=%d\n"

*p2,《  》);

A)p1-xB)p1

C)p2-xD)x-p2

22、若有说明:

char*language[]={"

FORTRAN"

BASIC"

PASCAL"

JAVA"

则表达式*language[1]>

*language[3]比较的是()

A)字符F和字符PB)字符串BASIC和字符串JAVA

C)字符B和字符JD)字符串FORTRAN和字符串PASCAL

23、若有说明:

则language[2]的值是()

A)一个字符B)一个地址C)一个字符串D)一个不定值

24、语句int(*ptr)();

的含义是()

A)ptr是指向一维数组的指针变量B)ptr是指向int型数据的指针变量

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

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

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

A)(*p)max(a,b);

B)*pmax(a,b);

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

D)*p(a,b);

26、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()

A)p=maxB)*p=max;

C)p=max(a,b)D)*p=max(a,b)

27、已有定义int(*p)();

指针p可以()。

A)代表函数的返回值B)指向函数的入口地址

C)表示函数的类型D)表示函数返回值的类型

28、若要对a进行++运算,则a应具有下面说明()

A)inta[3][2];

B)char*a[]={"

12"

ab"

C)char(*a)[3];

D)intb[10],*a=b;

29、下面正确的程序段是()

A)charstr[20];

str);

B)char*p;

C)charstr[20];

str[2]);

D)charstr[20],*p=str;

p[2]);

30、下面程序段的运行结果是()charstr[]="

ABC"

*p=str;

*(p+3));

A)67B)0C)字符'

C'

的地址D)字符'

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

char*p="

abcdefgh"

p+=3;

strlen(strcpy(p,"

)));

A)8B)12C)4D)7

32、下面说明不正确的是()

A)chara[10]="

china"

B)char[10],*p=a;

p="

C)char*a;

a="

D)chara[10],*p;

p=a="

33、若有说明语句

Itismine"

则以下不正确的叙述是()

A)a+1表示的是字符t的地址

B)p指向另外的字符串时,字符串的长度不受限制

C)p变量中存放的地址值可以改变

D)a中只能存放10个字符

34、若已定义chars[10];

则在下面表达式中不表示s[1]的地址是()

A)s+1B)s++C)&

s[0]+1D)&

s[1]

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

chars[6];

strcpy(s,"

\"

%s\"

A)"

B)"

abcd"

C)\"

abcd\"

D)编译出错

36、若有说明:

A)language[2]表示字符串"

pascal"

B)*language[2]的值是字母P

C)language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针

D)language是一个字符型指针数组,它包含5个元素,其初值分别是:

37、设chars[10],*p=s;

以下不正确的表达是()

A)p=s+5;

B)s=p+s;

C)s[2]=p[4];

D)*p=s[0];

38、设char**s;

A)s="

computer"

B)*s="

C)**s="

D)*s='

c'

39、选择i的正确结果()。

inti;

a\045+045\'

b"

*s++;

i++);

A)7B)8C)11D)12

40、如下程序的执行结果是()。

a\nn35\b"

i=%d\n"

i);

A)i=5B)i=6C)i=7D)i=8

41、如下程序的执行结果是()。

A)\"

B)"

C)"

D)不正确

42、如下程序的执行结果是()。

\\\"

B)a"

43、如下执行的程序结果是()。

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

int*p;

*(p+3)+=2;

%d,%d\n"

*p,*(p+3));

A)1,3B)1,6C)3,6D)1,4

44、以下正确的说明语句是()

A)int*b[]={1,3,5,7,9};

B)inta[2];

int*num[2]={&

a[0],&

a[1]};

C)inta[]={1,2};

int*num[2]={a[0],a[1]};

D)inta[3][4],(*num)[4];

num[1]=&

a[1][3];

45、若有以下定义,且0<

4,则不正确的赋值语句是()

intb[4][6],*p,*q[4];

A)q[i]=b[i];

B)p=b;

C)p=b[i];

D)q[i]=&

b[0][0];

46、若有定义:

inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;

则下面程序段的输出是()

a[k*3];

q[3][0]);

A)8B)16C)20D)结果不确定

47、若有以下定义,则数值不为3的表达式是()intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;

A)x[3]B)p1=x+3,*p1++C)p1=x+2,*(p1++)D)p1=x+2,*++p1

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

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

p=x;

pp=&

%3d\n"

**pp);

A)44B)24C)22D)46

49、若有以下说明和语句:

char**q;

q=language+2;

则语句printf("

%o\n"

*q);

A)输出的是language[2]元素地址B)输出的是字符串PASCAL

C)输出的是language[2]元素的值,它是字符串PASCAL的首地址

D)格式说明不正确,无法得到确定的输出

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

char*format="

%s,a=%d,b=%d\n"

inta=1,b=10;

a+=b;

printf(format,"

a+=b"

A)for,"

abB)format,"

C)a+=b,a=11,b=10D)以下结果都不对

三、编程题

1、有3个学生,每人考5门课,求每个学生的平均分和每门课的平均分数

2、输入一个字符串,内有数字和非数字字符,如:

a123x4561760?

302ab567,将其中连续的数字作为一个整数依次存放到一数组a中,如123存放到a[0]中,456存放到a[1]中。

3、求定积分:

计算[0,1]之间函数1+x2、[0,2]之间函数1+x+x2+x3、[0,3.5]之间函数x/(1+x2)的定积分。

附录:

答案

一、填空题

1、22、f3、6543214、12

5、one:

two:

three6、HELLO!

7、18、of

9、210、121211、41212、1

13、014、8815、2416、12

17、LBCP18、xbcdBCD23、Pascal,Clanguage,Dbase,Cobol

二、选择题

1—5BCCCB6—10DBCCB11—15BCBCB

16—20DADCD21—25BCBDC26—30ABDCB

31—35ADDBA36—40CBBBB41—45DABBA

46—50CBBCC

1、

main()

floatstu_ave(float(*p)[5]);

floatcour_ave(float*pt);

floatscore[3][5]={{100,60,70,80,67},{62,71,98,45,57},{90,39,89,39,90}};

intI;

for(I=0;

I<

I++)

printf(“%f”,stu_ave(score+i));

5;

printf(“%f”,cour_ave(score[0]+i));

floatstu_ave(float(*p)[5])

{

intj;

floatsum;

floatsum=0,ave;

for(j=0;

j<

j++)

sum=sum+*(*p+j);

re

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

当前位置:首页 > 自然科学 > 物理

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

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