二级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两个指针所指字符串进行比较