第6章练习题参考答案及解析
6-1填空题
1)8 8 int grid[4][8];
【解析】本题在定义数组时就指明了长度是8,数组的长度就是数组元素的个数。定义二维数组的一般格式是:类型说明符 数组名[常量表达式1] [常量表达式2];
2) how are you 3 5 11
【解析】strcpy(s1,s2)的作用是将字符串s2复制给字符数组s1。strlen()函数是测出字符串的实际长度,不包括字符串的结束标志'\0',其中\t和\n是转义字符。
3) strcpy(s,str1) strcpy(str1,str2) strcpy(str2,s)
【解析】数组不能直接用赋值语句来进行赋值。
4)数据类型
【解析】数组必须存放相同类型的数据。
5)gets(字符数组); puts(ch) stdio.h
【解析】其中ch可以是字符数组,也可以是字符串常量。程序中用到这两个函数时,在程序的开头必须有编译予处理命令:#include 。
6)0
【解析】strcmp(字符串1,字符串2)是字符串比较函数,如果字符串1大于字符串2,则返回一个正数值,如果字符串1小于字符串2,则返回一个负数值,如果相等则返回0。
7)按行的顺序存放的 整型量或整型量的表达式
【解析】本题旨在考察学生对二维数组的理解。
8)定义 省略
【解析】数组和变量一样,也必须先定义后使用,初始化数组时,数组的长度可能省略。
9)[0][0]
10) [2][1] 6
【解析】C语言中数组的下标是从0开始的。数组元素的个数即为数组的长度,在二维数组中即是第一维的长度乘以第二维的长度之积。
11) (1)int abc[10]; (2)float xyz[4]={ 1.9, -2.33, 0, 20.6};
【解析】本题旨在让学生掌握数组的定义及初始化。
12) (1)int array[10]={ 9,4,7,49,32,-5};
(2)0 9
(3) scanf("%d",&array[1]);
(4)array[0]=39;
(5)array[0]=array[5]+array[3];
【解析】本题旨在让学生掌握数组的输入和使用。
13) (1)3
(2)5
(3)8
(4)9
(5)9
【解析】重点理解数组长度的概念,即数组元素的个数。
14) (1)int a[10]={ 9,4,12, 8,2,10,7,5,1,3};
(2)0 9
(3)8 8
【解析】重点理解数组元素的访问方法。即数组名[下标]
15) j=0 j<=9(或j<10) sum=sum+j(或sum+=j)
【解析】数组适合于循环结构的程序设计。
16) XYZxyz XYZxyz
【解析】for (i=0; str1[i]=str2[i]; i++) ;完成的是将字符数组str2的各个元素依次赋值给字符数组str1,str1原来的内容被覆盖了,而str2的内容保持不变。
17) XYZxyz
【解析】字符串"ABCD" 比字符串"XYZxyz"小,字符串的比较是采用字典比较法,即先比较第一个字母,谁的ASCII码大谁就大,如果第一个字母相同就比较第二个字母,依次类推。
18) 类型
【解析】数组必须存放相同类型的数据。
19) 地址
【解析】数组名代表了这个数组在内存中的起始地址,是一个常量。
20) 5 9
【解析】 要求学生能会用指针访问数组元素的方法。
21) ab 2
【解析】 要求学生能记住'\0'是字符串结束的标志。
22) 4 3
【解析】 初始化数组char doom[]="xyz",系统自动在字符串"xyz"的后面加上了字符串的结束标志'\0'。所以它的长度为4,但strlen()函数测的时候不计'\0'在内。
23) 21 正值
【解析】 strcat(字符数组1,字符串)是连接函数。功能是将字符串连接到字符数组1的后面。
24) 维数
【解析】 数组的维数是指数组下标的个数,一维数组有一个下标,二维数组有两个下标,三维数组有三个下标……。
6-2选择题
1) C
【解析】C语言规定:定义数组时不能动态定义数组的大小。
2) D
【解析】数组的下标是从0开始的,二维数组的下标需要用两个中括号分别括起来,所以A是错误的,B和C是因为下标超出范围。
3) C
【解析】因为字符'3'的ASCII码是51,而'\0'的ASCII码是0,51-0=51。
4) C
【解析】把数组的二维表形式画出来,很容易看出第2行第0列元素的值是3。
5) D
【解析】把数组的二维表形式画出来,很容易看出第1行第2列元素的值是0,因为这个元素未初始