二级c语言复习

  • 格式:docx
  • 大小:61.08 KB
  • 文档页数:30

第十部分:字符串

一、选择题

(1)若有语句:char *line[5];,以下叙述中正确的是

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

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

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

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

(2)有以下程序

#include

main()

{ char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};

printf("%d %d\n", strlen(p), strlen(q));

}

以下叙述中正确的是

A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

D)由于p和q数组中都没有字符串结束符,故长度都不能确定

(3)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序

#include

void f(char *p[], int n)

{ char *t; int i,j;

for(i=0; i

for(j=i+1; j

if(strcmp(p[i],p[j])>0){ t=p[i]; p[i]=p[j]; p[j]=t; }

}

main()

{ char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};

f(p, 5);

printf("%d\n", strlen(p[1]));

}

程序运行后的输出结果是

A)2

B)3

C)6

D)4

(4)有定义语句:int b;char c[10]; ,则正确的输入语句是

A)scanf("%d%s",&b,&c);

B)scanf("%d%s",&b,c);

C)scanf("%d%s",b,c);

D)scanf("%d%s",b,&c);

(5)以下能正确定义一维数组的选项是

A)int a[5]={0,1,2,3,4,5};

B)char a[]={0,1,2,3,4,5};

C)char a={'A','B','C'};

D)int a[5]="0123";

(6)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是

A)数组a和b的长度相同

B)a数组长度小于b数组长度 C)a数组长度大于b数组长度

D)上述说法都不对

(7)以下语句或语句组中,能正确进行字符串赋值的是

A)char *sp; *sp="right!";

B)char s[10]; s="right!";

C)char s[10]; *s="right!";

D)char *sp="right!";

(8)有以下程序

main()

{

char s[]="159",*p;

p=s;

printf("%c",*p++);

printf("%c",*p++);

}

程序运行后的输出结果是

A)15

B)16

C)12

D)59

(9)有以下函数

fun(char *a,char *b)

{

while((*a!='\0')&&(*b!='\0')&&(*a==*b))

{ a++; b++;}

return (*a-*b);

}

该函数的功能是

A)计算a和b所指字符串的长度之差

B)将b所指字符串复制到a所指字符串中

C)将b所指字符串连接到a所指字符串后面

D)比较a和b所指字符串的大小

(10)有以下程序

point(char *p)

{

p+=3;

}

main()

{ char b[4]={'a','b','c','d'},*p=b;

point(p); printf("%c\n",*p);

}

程序运行后的输出结果是

A)a

B)b

C)c

D)d

(11) s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是

A) if(s1>s2)S; B) if(strcmp(s1,s2))S;

C) if(strcmp(s2,s1)>0) S;

D) if(strcmp(s1,s2)>0)S;

(12) 有以下程序

main()

{char str[][10]={"China","Beijing"},*p=str;

printf("%s\n",p+10);

}

程序运行后的输出结果是

A) China

B) Bejing

C) ng

D) ing

(13) 有以下程序

main()

{char s[]="ABCD",*p;

for(p=s+1;p

}

程序运行后的输出结果是

A) ABCD B) A C) B D) BCD

BCD B C CD

CD C D D

D D

(14) 有以下程序

main()

{ char s[]"Yes\n/No",*ps=s;

puts(ps+4);

*(ps+4)=0;

puts(s);

}

程序运行后的输出结果是(选项D中的第一行是空行)

A) n/No B) /No C) n/NO D)

Yes Yes Yes /No

/No /No Yes

(15) 有以下定义

#include

char a[10],*b=a;

不能给数组a输入字符串的语句是

A) gets(A)

B) gets(a[0])

C) gets(&a[0]);

D) gets(B) ;

(16) 有以下程序

main( )

, char *p*10+=,“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”-;

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

}

执行后输出结果是

A) 2 B) 3

C) 4

D) 5

(17) 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是

A) char s[10]=”abcdefg”;

B) char t[]=”abcdefg”,*s=t;

C) char s[10];s=”abcdefg”;

D) char s[10];strcpy(s,”abcdefg”);

(18) 下列选项中正确的语句组是

A) char s[8]; s={"Beijing"}; B) char *s; s={"Beijing"};

C) char s[8]; s="Beijing"; D) char *s; s="Beijing";

(19) 以下程序中函数scmp的功能是返回形参指针s1和 s2所指字符串中较小字符串的首地址

#include

#include

char *scmp(char *s1, char *s2)

{ if( strcmp (s1, s2<0)

return(s1);

else return(s2);

}

main ()

{ int I; char string[20], str[3][20];

for(i=0;i<3;i++) gets(str[i]);

strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/

strcpy(string,scmp(string,str[2]));

printf("%s\n",string);

}

运行时依次输入:abcd、abba和abc三个字符串,则输出结果为

A) abcd

B) abba

C) abc

D) abca

(20) 有以下程序

#include

main()

{ char str[][20]={"Hello","Beijing"}, *p=str;

printf("%d\n",strlin(p+20));

}

程序运行后的输出结果是

A) 0

B) 5

C) 7

D) 20

(21) 已定义以下函数

fun(char *p2, char *p1)

{ while((*p2=*p1)!=‘\0’),p1++;p2++; - }

函数的功能是

A) 将p1所指字符串复制到p2所指内存空间

B) 将p1 所指字符串的地址赋给指针 p2

C) 对p1和p2两个指针所指字符串进行比较