background image

【分析】备选答案①中省略了数组长度,所以每个元素都赋了初值,共计 4 个元素,初值

依次为'l'、'2'、'3'、'\0',最后一个元素的值为字符串结束标记,所以数组 S 中存放的是
字符串"123",该答案不符合题意(即正确的);备选答案③中直接赋予字符串作为初
值所以数组 s 的长度为 4,其中的初值是字符串"123",不符合题意(即正确的);备选
答案③中也是给数组 s 赋予字符串的初值,但是字符串不是"123",而是"123\n",所
以该答案符合题意(即错误的);显然答案④也不符合题意(即正确的)。下面来分析答
案④为什么是正确的,该答案给出了数组长度为 4,赋初值时仅给前 3 个元素赋予字
符'1 '  

、'2'、'3'

 

,第 4

 

个元素没有赋初值,按照 C 语言的规定,也有初值,且初值为空值,

 对字符型数组来说,空值就是'\0',即字符率结束标记,所以数组 S 中存放的也是字符

"

 

123"

7   设 有 下 列 数 据 定 义 语 句 , 则 数 组 元 素 x 的 值 是 __________________ 。
int   i

 

3

x[4]={   1

2

3}

【分析】由于 i 的初值为 3,所以 x 就是 x[3]。由于数组的下标是从 0 开始的,所以 x[3]

实际上是数组 x 的第 4 个元素。从定义语句中可以看出数组 x 的前 3 个元素的初值依次为
1、2、3,第 4 个元素没有赋初值,其初值自动设为空值,对整型数组来说,空值是 0,

x[3

0.

0

8  

 

设 有 下 列 数 据 定 义 语 句 , 则 puts ( & s[0][0] ) 的 输 出 结 果 是 __________ ; 

puts

s[0]

_____________

char   s[4][5]={{'l' , ' \ 0'} , {"23"} , "345" , "4 \ 0"} ;

【分析】首先分析字符型数组 s 的初值,s 的第 1 行中存放的字符串是"1"、第 2 行中存放

的符串是"23"、第 3 行中存放的字符串是"345"、第 4 行中存放的字符串是"4"。puts()
函数的功能是输出从"参数"处开始存放的字符串中有效字符。按照上的分析,第 1 个输出
的结果是从"&S[0][0]"开始的字符串,这个地址对应的就是数 s 的第 1 行,所以输出结
果为 1;第 2

个输出的结果是从 s[]”开始的字符串,这个址对应的也是数组 s 的第 1 行,

1

  1

  

   

   

 1

9

 

char   a[4][10]={"11"

"22"

"33"

"44"}

 

puts ( strcat ( a[1] , a[3] ) ) 的 输 出 结 果 是 ________________ ;

putS ( strcpy ( a[0] , a[2] ) ) 的 输 出 结 果 是 _ _______________ 。
【分析】字符数组 a 共有 4 行,每行存放一个字符串。这 4 行的首地址依次为:
a[0] 、 a[1] 、 a[2] 、 a[3] , 从 这 4 个 地 址 开 始 存 放 的 字 符 串 依 次
为:"11"、"22"、"33"、"44"。strcat(a[1],a[3])函数调用的功能是将 s[3]处的字符串
连接到 a[l]的字符串后面,所以执行该函数调用后的 a「l」处的字符串为"2244",而该函
数的返回值就是 a[1]的首地址,puts()函数的功能就是输出这个地址存放的字符串,
由此,第 1 个输出的结果就是:2244。同样理由可以分析 strcpy(a[0],a[2])的功能
是将 a[2]处的字符串("33")复制到 a[0]处,返回 a[0]的地址,puts()输出的就是
a[0]

33

2244

  

   

   33