46.设有定义:"char s[12]={"string"};" 则printf("%d\n",strlen(s));的输出是( ) A. 6 A5 N7 W+ v# C/ S: Q" G+ L Q$ D
B. 7
# B; `; ?/ s7 U4 r, f C.11
; a! g* X* C9 S; f: e$ G" U+ i D.12
9 ?- i) O/ \& I: j% @+ c 【解析】在C语言中,字符串是指在有效字符之后有字符率结束标记符的字符列,并约定字符串的长度是指字符率中有效字符个数,不包括字符串的结束标记符。存放于字符数组s中的字符串是“string”,该字符串的长度为6,所以输出该字符串的长度应是6。正确的解答是A。
% ~5 H7 m+ M- D 【参考答案】A7 ]7 j( A/ v) l9 ^# p8 n1 i6 S0 [! F
47.下列语句中,正确的是( )6 m, M9 y" o# u& J
A.char a[3][]={'abc",'1'};3 [" I/ j5 t( d7 }6 }& C
B.char a[][3]={'abc','l'};
/ a% b+ @% k7 e9 r C.char a[3][]={'a',"1"};( k) F" U- U7 `( [
D.char a[][3]={"a","1"};/ r+ l1 N3 B) K. t$ D
【解析】如定义数组时有初始化,其最高维的长度可以省缺,由系统根据初始化时的初值个数确定,而其它维的长度是不可以缺省的。对二维字符数组的初始化,可以按行用字符串对其初始化,也可以按二维数组元素的存储顺序逐一用字符对其元素初始化。在供选择解答A.和C.中,有不是最高维的长度被缺省,所以是错误的。在供选择解答A.和B.中,还将字符串常量写作'abc',这也是错误的。只有D.,用字符率按行给二维字符数组初始化,这才是正确的。正确构解答是D。- @- @3 ]. P, ^5 l8 @
【参考答案】D7 E; l* V" l) H. S$ a' s+ P* W* n
48.合法的数组定义是( )4 s' ]- }+ w9 P U/ O4 D' C
A.int a[]={"string"}) D# u; O, R+ Q8 E& W0 E
B.int a[5]={0,1,2,3,4,5};( [9 p6 y9 T- ]
C.char a={"string"}
# A8 ^" r k* D$ l5 i0 m D.char a[]={0,1,2,3,4,5};" B, a$ {5 w5 h3 j9 z* H
【解析】A.错误的原因是整数数组不可以用字符串对其初始化。B.错误的原因是,数组初始化时,初始化指定的值的个数多于数组的元素个数。C.错误的原因是,能用字符串初始化的只;有字符指针变量,或字符数组。字符率不能对其它类型的变量初始化,包括字符变量。D是正确的,因为字符数组可以用小整数(作为字符的ASCII代码值)对其元素初始化。/ S' v5 d1 {8 G0 S, j3 z
【参考答案】D3 I1 F9 D0 Q! L2 {: F0 O
49.语句"printf("%d\n"strlen("ats\nol2\1\\"));"的输出结果是( )
& c5 ~) [) z. m' Z& g A.11
6 l( N% n9 Q. H; b9 G" ]/ E; ?- a B.105 i: u7 n. Q! _6 J2 T0 B* h
C. 94 v2 Q8 d! h' f0 B4 E! N4 D% {
D. 8
. o. K. B5 Z$ e7 n 【解析】字符串中的字符可以是一般的普通字符,也可以是由反斜杠字符开头的转义字符。在字符串"abs\no12\11\\" 中,有三个转义字符,它们是\n、\1、\\,所以该字符串的有效字符个数是9。所以正确的回答是C。. X7 K V9 u- A2 M
【参考答案】C) c- h! l% o, Q" n
50.函数调用“strcat(strcpy(strl,str2),str3)”的功能是( )
9 W+ h' T# q& }$ N* c- J A.将字符串strl复制到字符串str2中后再连接到字符串str3之后
; _" }" Z' V) m% ]- I B.将字符串strl连接到字符串str2中后再复制到字符率str3之后) O9 W9 q X! N7 {+ V( u
C.将字符串str2复制到字符串strl中后再将字符串str3连接到字符串strl之后7 C ]6 T. h, W' x1 ?$ ]0 f
D.将字符串str2连接到字符率strl之后再将字符串strl复制到字符串str3中4 F. [, l, @" U9 m+ M% F/ z! l3 S
【解析】函数调用strcat(s1,s2)是将s2字符串复制连接到s1字符串之后,使s1字符串变得更长。函数调用strcpy(s1,s2)是将s2字符串复制到s1,使s1字符串的内容与s2字符串的内容相同。函数调用strcat(strcpy(strl,str2) ,str3) 是先执行strcpy(strl,str2),然后再执行strcat(strl,str3),所以其功能是将字符串str2复制到字符串strl中,然后再将字符串str3复制连接到字符串strl之后。正确的选择是C。
6 d9 h: k1 j- U- Q' E1 e' l4 D 【参考答案】C |