指针字符串练习题及答案.docx

上传人:b****8 文档编号:9491715 上传时间:2023-02-04 格式:DOCX 页数:33 大小:31.47KB
下载 相关 举报
指针字符串练习题及答案.docx_第1页
第1页 / 共33页
指针字符串练习题及答案.docx_第2页
第2页 / 共33页
指针字符串练习题及答案.docx_第3页
第3页 / 共33页
指针字符串练习题及答案.docx_第4页
第4页 / 共33页
指针字符串练习题及答案.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

指针字符串练习题及答案.docx

《指针字符串练习题及答案.docx》由会员分享,可在线阅读,更多相关《指针字符串练习题及答案.docx(33页珍藏版)》请在冰豆网上搜索。

指针字符串练习题及答案.docx

指针字符串练习题及答案

指针字符串练习题及答案

单项选择

==================================================

题号:

4074

若有定义语句:

inta[4][10],*p,*q[4];且0<=i<4,则错误的赋值是().

A、p=a

B、p=&a[2][1]

C、q[i]=a[i]

D、p=a[i]

答案:

A

 

题号:

4333

执行下列语句后的结果为().

intx=3,y;

int*px=&x;

y=*px++;

printf("x=%d,y=%d\n",x,y);

A、x=3,y=3

B、x=4,y=4

C、x=3,y不知

D、x=3,y=4

答案:

A

 

题号:

4876

下列程序的运行结果是

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

A、00

B、36

C、编译出错

D、63

答案:

B

 

题号:

4116

if(i==0)aa[i][i+1]=*p+1;

else++p;

printf("%d",*p);

}

}

的输出是().

A、25

B、30

C、26

D、23

答案:

D

 

题号:

4124

若有说明:

inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是().

A、i=*p;

B、*p=*&j;

C、i=**p;

D、i=&j;

答案:

B

 

题号:

4165

阅读下面程序,程序执行后的结果为().

#include"stdio.h"

main()

{char*str="abcdefghijklmnopq";

while(*str++!

='e');

printf("%c\n",*str);

}

A、f

B、q

C、e

D、a

答案:

A

 

题号:

4167

关于指针概念说法不正确的是().

A、指针变量可以由整数赋,不能用浮点赋

B、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中,

C、一个指针变量只能指向同一类型变量

D、一个变量的地址称为该变量的指针

答案:

A

 

题号:

4173

设有以下定义:

intw[2][3],(*pw)[3];

pw=w;

则对w数组元素非法引用是().

A、pw[0][0]

B、*(pw[1]+2)

C、*(pw+1)[2]

D、*(w[0]+2)

答案:

C

 

题号:

4532

若有定义:

chars[3][10],*k[3],*p;,则以下赋值语句正确的是().

A、k=s;

B、p=k;

C、p=s;

D、p=s[0];

答案:

D

 

题号:

4174

当运行以下程序时输入OPENTHEDOOR,则输出结果是

#include

charfun(char*c)

{if(*c<='Z'&&*c>='A')

*c-='A'-'a';

return*c;

}

main()

{chars[8],*p=s;

gets(s);

while(*p)

{*p=fun(p);

putcahr(*p);p++;

}

putchar('\n');

}

A、OpenTheDoor

B、OPENTHEDOOR

C、openthedoor

D、oPENtHEdOOR

答案:

C

 

题号:

4175

下列程序执行后的输出结果是().

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5]={0};

a=0;b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

A、8

B、9

C、7

D、6

答案:

D

 

题号:

4390

已知有声明"chara[]="prongram",*p=a+1;",则执行以下语句不会输出字符a的是()o

A、putchar(*p+4);

B、putchar(*(p+4));

C、putchar(a[sizeof(a)-3]);

D、putchar(*(a+5));

答案:

A

 

题号:

4181

定义语句int*swap();指的是

A、其他说法都不对

B、swap是一个返回指向整型值指针的函数

C、swap是一个返回整型值的函数

D、swap是一个指向函数的指针

答案:

B

 

题号:

4184

有以下程序:

#include

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main()

{char*s1="abc",*s2="123";

swap(s1,s2);printf("%s,%s\n",s1,s2);

}

程序执行后的输出结果是().

A、1bc,a23

B、123,abc

C、321,cba

D、abc,123

答案:

A

 

题号:

4211

若有inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则输出结果不为5

的语句为().

A、printf("%d",p[5]);

B、printf("%d",*p[5]);

C、printf("%d",*(a+5));

D、printf("%d",*(p+5));

答案:

B

 

题号:

4215

有以下程序:

voidfun(int*a,inti,intj)

{intt;

if(i

{t=a[i];a[i]=a[j];a[j]=t;

fun(a,++i,--j);

}

}

main()

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

fun(a,0,5);

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

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

}

执行后输出结果是().

A、654321

B、214365

C、324156

D、123456

答案:

A

 

题号:

4113

以下程序运行后的输出结果是().

main(){charch[]="uvwxyz",*pc;

pc=ch;

printf("%c\n",*(pc+5));

}

A、字符y的地址

B、0

C、元素ch[5]地址

D、z

答案:

D

 

题号:

4695

有以下程序

#include

main()

{inta[]={1,2,3,4},y,*p=&a[3];

--p;y=*p;printf("y=%d\n",y);

}

程序的运行结果是().

A、y=0

B、y=2

C、y=1

D、y=3

答案:

D

 

题号:

4298

若有语句:

char*line[5];下列叙述中正确的是().

A、定义line是一个指针数组,语句中的*号称为间址运算符

B、定义line是一个数组,每个数组元素是一个基类型为char的指针变量

C、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

D、定义line是一个指向字符型函数的指针

答案:

B

 

题号:

2457

设有数组定义:

chararray[]="China";,则数组array所占的空间为().

A、5个字节

B、4个字节

C、6个字节

D、7个字节

答案:

C

 

题号:

2468

下述对C语言字符数组的描述中错误的是().

A、字符数组中的字符串可以整体输入,输出.

B、不可以用关系运算符对字符数组中的字符串进行比较.

C、字符数组中可以存放字符串.

D、可以通过赋值运算符"="对字符数组整体赋值.

答案:

D

 

题号:

2479

以下程序:

#include

#include

main()

{charstr[]="abcd\n\123\xab";

printf("%d",strlen(str));

}

运行后的输出结果是().

A、10

B、9

C、14

D、7

答案:

D

 

题号:

2485

已知有声明"chars[20]="Hello";",在程序运行过程中若要想使数组s中的内容修改为"Good",则以下语句能够实现此功能的是().

A、strcpy(s,"Good");

B、strcat(s,"Good");

C、s[20]="Good";

D、s="Good";

答案:

A

 

题号:

2499

以下程序段的输出结果是

pritnf("%d\n",strlen("ATS\n012\1\\"));

A、11

B、8

C、9

D、10

答案:

C

 

题号:

2510

chara1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是().

A、strcat(a2,a1);

B、strcpy(a2,a1);

C、strcpy(a1,a2);

D、strcat(a1,a2);

答案:

A

 

题号:

2530

设有以下语句,若0

charstr[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];

intj;

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

strp[j]=str[j];

A、*strp

B、strp

C、strp[k]

D、str[k]

答案:

B

 

题号:

2543

选择正确的输入语句().

(其中:

charstring[10];)使得string的内容为"Hello".

A、scanf("%s",&string);

B、scanf("%c",string);

C、scanf("%c",&string);

D、scanf("%s",string);

答案:

D

 

题号:

2874

下列数组说明中正确的是().

A、staticcharstr1[5],str2[]={"China"};str1=str2;

B、staticcharstr[];str="China";

C、staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

D、staticcharstr[]="China";

答案:

D

 

题号:

2633

已定义charstring[20];使得string的内容为"Youarestudent"的正确输入语句是().

A、scanf("%c",&string);

B、gets(string);

C、scanf("%s",&string);

D、scanf("%s",string);

答案:

B

 

填空题

==================================================

题号:

4875

若有定义:

charch;

定义指针p,并使其指向变量ch的初始化语句是_____。

(必须使用一条语句)

答案:

空1:

char*p=&ch;【或】char*p=&ch

 

题号:

4101

在c程序中,只能给指针变量赋NULL值和_____值.

答案:

空1:

指针【或】地址

 

题号:

4235

已知有声明"inta[3][2]={{1,2},{3,4},{5,6}},*p=a[0];",则执行语句"{printf("%i

d\n",*(p+4));"后的输出结果为______。

答案:

空1:

5

 

题号:

4313

执行语句chars[3]="ab",*p;p=s;*(p+_____)的值是'\0'.

答案:

空1:

2

 

题号:

4363

设变量定义为"intx=3,*p=&x;",设变量x的地址为2000,则*p=_____,&(*p)=_____(填数字)

答案:

空1:

3

空2:

2000

 

题号:

4399

若有程序段“inta[10],*p=a,*q;q=&a[5];”,则表达式q-p的值是(______)。

答案:

空1:

5

 

题号:

2707

若有定义:

chars[]="china";则C编译系统为数组s开辟_____个字节的内存单元.

答案:

空1:

6

 

题号:

2708

以下findmax返回s中最大元素的下标,数组中元素的个数由t传入。

请填空。

fndmax(ints[],intt)

{intk,p;

for(p=0,k=p;p

if(s[p]>s[k])

_____;

return_____;

}

答案:

空1:

k=p

空2:

k

 

题号:

2799

已知chars[]={'H','e','l','l','o'};则s数组中含有_____个元素.

答案:

空1:

5

 

题号:

2820

C语言中,二维数组在内存中的存放方式为按_____连续存放.

答案:

空1:

 

程序填空

==================================================

题号:

547

/*给定程序中,函数fun的功能是:

找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

不得增行或删行,也不得更改程序的结构!

*/

#include

#defineN4

voidfun(int(*a)[N],int*b)

{inti,j;

for(i=0;i

/**********FILL**********/

b[i]=__1__;

for(j=1;j

/**********FILL**********/

if(b[i]__2__a[j][i])b[i]=a[j][i];

}

}

main()

{intx[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],i,j;

printf("\nThematrix:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

/**********FILL**********/

fun(__3__);

printf("\nTheresultis:

");

for(i=0;i

printf("\n");

}

答案:

位置1:

a[0][i]

位置2:

<

位置3:

x,y

 

题号:

565

/*给定程序中,函数fun的功能是:

判断形参s所指字符串是否是"回文"(Palindrome),

若是,函数返回值为1;不是,函数返回值为0。

"回文"是正读和反读都一样的字符串(不区分大小写字母)。

例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

不得增行或删行,也不得更改程序的结构!

*/

#include

#include

#include

intfun(char*s)

{char*lp,*rp;

/**********FILL**********/

lp=__1__;

rp=s+strlen(s)-1;

while((toupper(*lp)==toupper(*rp))&&(lp

/**********FILL**********/

lp++;rp__2__;}

/**********FILL**********/

if(lp

elsereturn1;

}

main()

{chars[81];

printf("Enterastring:

");scanf("%s",s);

if(fun(s))printf("\n\"%s\"isaPalindrome.\n\n",s);

elseprintf("\n\"%s\"isn'taPalindrome.\n\n",s);

}

 

答案:

位置1:

s

位置2:

--

位置3:

return0

 

题号:

561

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:

输出连接后的字符串。

-------------------------------------------------------*/

#include"stdio.h"

/***********FILL***********/

_____

main()

{

charss[10]="12345";

strcat(ss,"6789");

/***********FILL***********/

printf(_____,ss);

}

 

答案:

位置1:

#include【或】#include"string.h"

位置2:

"%s\n"【或】"%s"

 

题号:

568

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:

本程序用printf函数输出字符串"Iamstudent",完善程序。

-------------------------------------------------------*/

#include"stdio.h"

main()

{

inti;

char*s1="Iamstudent";

/***********FILL***********/

for(i=0;s1[i]!

='_____';i++)

/***********FILL***********/

printf("_____",s1[i]);

}

 

答案:

位置1:

\0

位置2:

%c

 

题号:

689

/*给定程序中,函数fun的功能是:

对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。

ss所指字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

不得增行或删行,也不得更改程序的结构!

*/

#include

#include

#defineM5

#defineN20

voidfun(char(*ss)[N])

{inti,j,k,n[M];chart[N];

for(i=0;i

for(i=0;i

{k=i;

/**********FILL**********/

for(j=___1___;j

/**********FILL**********/

if(n[k]>n[j])___2___;

if(k!

=i)

{strcpy(t,ss[i]);

strcpy(ss[i],ss[k]);

/**********FILL**********/

strcpy(ss[k],___3___);

n[k]=n[i];

}

}

}

main()

{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

inti;

printf("\nTheoriginalstringsare:

\n");

for(i=0;i

printf("\n");

fun(ss);

printf("\nTheresult:

\n");

for(i=0;i

}

答案:

位置1:

i+1

位置2:

k=j

位置3:

t

 

程序改错

==================================================

题号:

694

/*给定程序中函数fun的功能是:

将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。

例如:

把3个串:

"abc","CD","EF"连接起来,结果是"abcCDEF"。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

*/

#include

#include

voidfun(charstr[][10],intm,char*pt)

{

/**********ERROR**********/

Intk,q,i;

for(k=0;k

{q=strlen(str[k]);

for(i=0;i

/**********ERROR**********/

pt[i]=str[k,i];

pt+=q;

pt[0]=0;

}

}

main()

{intm,h;

chars[10][10],p[120];

printf("\nPleaseenterm:

");

scanf("%d",&m);gets(s[0]);

printf("\nPleaseenter%dstring:

\n",m);

for(h=0;h

fun(s,m

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

当前位置:首页 > 高等教育 > 医学

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

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