C语言指针习题及答案文档格式.docx

上传人:b****7 文档编号:22384938 上传时间:2023-02-03 格式:DOCX 页数:14 大小:38.20KB
下载 相关 举报
C语言指针习题及答案文档格式.docx_第1页
第1页 / 共14页
C语言指针习题及答案文档格式.docx_第2页
第2页 / 共14页
C语言指针习题及答案文档格式.docx_第3页
第3页 / 共14页
C语言指针习题及答案文档格式.docx_第4页
第4页 / 共14页
C语言指针习题及答案文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言指针习题及答案文档格式.docx

《C语言指针习题及答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言指针习题及答案文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

C语言指针习题及答案文档格式.docx

6.若有语句:

int*p,a=4;

和p=&

a;

下面均代表地址的一组选项是

D。

A)a,p,*&

aB)&

*a,&

a,*pC)*&

p,*p,&

aD)&

a,&

*p,p

7.下面判断正确的是__C。

A)char*a=”china”;

等价于char*a;

*a=”china”;

B)charstr[1O]={china”};

等价于charstr[1O];

str[]={china”;

}

C)char*s=”china”;

等价于char*s;

s=”china”;

D)charc[4]=”abc'

d[4]=”abc”;

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

8.下面程序段中,for循环的执行次数是C。

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

for(;

*s!

='

\0'

;

s++)printf(*”);

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

9.下面能正确进行字符串赋值操作的是__C。

A)chars[5]={ABCDE”};

B)chars[5]={A\'

B\'

C\'

D\'

E'

};

C)char*s;

s=”ABCDE”;

D)char*s;

scanf(%s”,s);

10.下面程序段的运行结果是__C。

char*s=”abcd6'

s+=2;

printf(%d”,s);

A)cdeB)字符c'

C)字符'

c'

的地址D)不确

11.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正

确执行的赋值语句是__B。

A)c=*p1+*p2B)p2=cC)p仁p2D)

c=*p1*(*p2)

12.设有程序段:

chars[]=”china”;

char*p;

p=s;

则下面叙述正确的是

A)s和p完全相同

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

C)s数组长度和p所指向的字符串长度相等

D)*p与s[0]相等

13.以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是

A)strcpy1(char*p1,char*p2)

{while((*p1++=*p2++)!

\0\;

B)strcpy2(char*p1,char*p2)

{while((*p仁*p2)!

){p1++;

p2++}}

C)strcpy3(char*p1,char*p2)

{while(*p1++=*p2++);

D)strcpy4(char*p1,char*p2)

{while(*p2)*p1++=*p2++;

14.下面程序段的运行结果是__C。

chara[]=”anguagW'

*p;

p=a;

while(*p!

'

){printf(%c”,*p-32);

p++;

A)LANGUAGEB)IanguageC)LANGD)

IangUAGE

16.以下与库函数strcmp(char*s,char*t)功能相等的程序段是

A)strcmp1(char*s,char*t)

{for(;

*s++=*t++;

if(*s=='

return0;

return(*s-*t);

B)strcmp2(char*s,char*t)

if(!

*s)return0;

C)strcmp3(char*s,char*t)

*t==*s;

{if(!

*t)return0;

t++;

s++;

D)strcmp4(char*s,char*t)

*s==*t;

s++,t++)

return(*t-*s);

17.以下说明不正确的是D。

A)chara[10]=”china”;

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

p=”china”;

C)char*a;

a=”china”;

D)chara[10],*p;

p=a=china;

18.设有说明语句:

chara[]=”Itismine”;

char*p=”Itismine”;

则以下

不正确的叙述是__D。

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

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

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

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

19.若已定义chars[10];

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

B。

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

s[0]+1D)&

s[1]

20.若有定义:

inta[5],*p=a;

则对a数组元素的正确引用是D。

A)*&

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

21.若有定义:

则对a数组元素地址的正确引用是

A)p+5B)*a+1C)&

a+1D)&

a[0]

22.若有定义:

inta[2][3];

则对a数组的第i行第j列元素值的正确引用是—

A。

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

*(a+i)+j

23.

若有定义:

则对a数组的第i行第j列元素地址的正确引用是_

 

A)*(p+2)

(p+1)+2

25.若有程序段:

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

p=a;

则对a数组元素的正确引用是

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

p[1]+2

26.若有定义:

inta[5];

则a数组中首元素的地址可以表示为__C。

A)&

aB)a+1C)aD)

&

a[1]

27.若有定义:

int(*p)[4];

则标识符pC。

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

B)是一个指针数组名

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

D)定义不合法

28.以下与int*q[5];

等价的定义语句是__C。

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

(*q)[5]

29.以下正确的说明语句是__B。

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

B)inta[5],*num[5]={&

a[0],&

a[1],&

a[2],&

a[3],&

a[4]};

C)inta[]={1,3,5,7,9};

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

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

num[1]=&

a[1][3];

30.若有定义:

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

且0Wi<

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

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

B)p=b;

C)p=b[i];

D)

q[i]=&

b[0][0]

32.若要对a进行自减运算,则a应有下面说明__D。

A)intp[3];

B)intk;

C)char*a[3]D)int

b[10];

int*a=&

k;

int*a=p;

int*a=b+1;

33.以下选项中,

对指针变量p的正确操作是

Bo

A)inta[3],*p;

B)inta[5],*p;

C)inta[5];

D)int

a[5]

p=&

a;

p=a;

int*p=a=100;

int

*p1,*p2=a;

*卩仁*p2;

34.若有定义:

intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;

则数值不为3的表达式是

A)x[3]B)p1=x+3,*p1++

C)p1=x+2,*(p1++)D)p1=x+2,*++p1

35.下面程序段的输出是C。

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

for(k=01;

k<

4;

k++)q[k]=&

a[k*3];

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

A)8B)16C)20D)输

出不合法

36.若要对a进行自增运算,则a应具有下面说明__D。

A)inta[3][2];

B)char*a[]={12””ab”;

C)char(*a)[3]D)intb[10],*a=b;

37.若有定义inta[4][6];

则能正确表示a数组中任一元素a[i][j](i,j均在

有效范围内)地址的表达式Ao

A)&

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

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

C)&

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

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

38.下面程序的运行结果是__Bo

main()

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

p=x,pp=&

p;

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

printf(%3d”**pp);

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

39.若有定义intx[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*p)[3]=x;

则能够正确表

示数组元素x[1][2]的表达式是__D。

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

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

40.若有说明:

char

*language[]={FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};

J则Ianguage[2]

的值是B。

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

个不定值

41.设有定义:

char*cc[2]={1234”,”5678”};

则正确的叙述是_A。

A)cc数组的两个元素中各自存放了字符串”1234”和”5678”的首地址

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

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

D)cc元素的值分别维”1234”和”5678”

42.已有定义int(*p)();

指针p可以B。

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

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

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

是A。

A)p=max;

B)p=max(a,b);

C)*p=max;

*p=max(a,b);

44.若有函数max(a,b),并且已使函数指针变量p指向函数max当调用该函数

时,正确的调用方法是C或p(a,b)。

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

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

D)*p(a,b);

45.以下正确的叙述是C。

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

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

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

D)若有说明:

intmain(intargc,char**argv),则argc的值必须大于1三.程序阅读题

1.写出下面程序的运行结果。

5

func(char*s,chara,intn)

{intj;

*s=a;

j=n;

while(*s<

s[j])j--;

returnj;

main()

{charc[6];

inti;

for(i=1;

i<

=5;

i++)*(c+1)='

A'

+i+1;

printf(“%d\n”,func(c,'

5));

2.写出下面程序的运行结果。

6

fun(char*s)

{char*p=s;

while(*p)p++;

return(p-s);

{char*a=”abcdef”;

printf(“%d\n”,fun(a));

3.写出下面程序的运行结果。

abcdefglkjih

sub(char*a,intt1,intt2)

{charch;

while(t1<

t2){

ch=*(a+t1);

*(a+t1)=*(a+12);

*(a+t2)=ch;

t1++;

t2--;

{chars[12];

inti;

for(i=0;

12;

i++)s[i]='

+i+32;

sub(s,7,11);

i++)printf(%c”,s[i]);

printf(\h”;

4.

976531

当运行以下程序时,写出输入6/的程序运行结果

sub(char*a,charb)

{while(*(a++)!

);

while(*(a-1)<

b)

*(a--)=*(a-1);

*(a--)=b;

{chars[]=”97531”c;

c=getchar();

sub(s,c);

puts(s);

5.写出下面程序的运行结果。

Java

dBase

CLanguage

Pascal

{char*a[]={Pascal"

”CLanguag6‘,”dBase'

Java'

char(**p)[];

intj;

p=a+3;

for(j=3;

j>

=0;

j--)

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

四•程序填空题

1.下面函数的功能是从输入的十个字符串中找出最长的那个串,请填

(2)空使程

序完整。

voidfun(charstr[10][81],char**sp)

{inti;

*sp=【1str[0]】;

10;

i++)

if(strlen(*sp)<

strlen(str[i]))【2】;

2.下面函数的功能是将一个整数字符串转换为一个整数,例如:

”-1234”转换为

1234,请填(3)空使程序完整。

intchnum(char*p)

{intnum=0,k,len,j;

len=strlen(p);

for(;

【1】;

p++){

k=【2*p-0'

】;

j=(--len);

while(【3j--!

=0】)k=k*10;

num=num+k;

return(num);

3.下面函数的功能使统计子串substr在母串str中出现的次数,请填⑶空使程序完整。

intcount(char*str,char*substr)

{inti,j,k,num=0;

for(i=0;

【1】;

i++)

for(【2j=i],k=0;

substr[k]==str[j];

k++;

j++)

if(substr[【3k】]=='

){

num++;

break;

return(num);

6.下面函数的功能是将两个字符串s1和s2连接起来,请填

(2)空使程序完整。

voidconj(char*s1,char*s2)

{

while(*s1)【1s1++】;

while(*s2){*s1=【2*s2】;

s1++,s2++;

*s仁'

1.定义3个整数及整数指针,仅用指针方法按由小到大的顺序输出

2.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。

写三个函数:

①输入10个数;

②进行处理;

③输出10个数。

所有函数的参数均用指针。

3.编写一个求字符串的函数(参数用指针),在主函数中输入字符串,并输出其长度。

4.编写一个函数(参数用指针)将一个3X3矩阵转置

5.写函数原型为intstrcmp(char*s1,char*s2);

的函数,该函数实现两个字

符串的比较(函数功能描述参见教材P137,strcmp字符串处理函数)。

6.利用指向行的指针变量求5X3数组各行元素之和。

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

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1