第5章 数组习题参考答案
一、单项选择题
1.以下对一维整型数组a 的正确说明是【 】。
A) int a(10);
B) int n=10,a[n];
C) int a[ ];
D) #define SINE 10
int a[SIZE];
【答案】D
2.以下对二维数组a 的正确说明是【 】。
A) int a[3][ ] ; B) float a[ ][4];
C) double a[3][4]; D) float a(3)(4);
【答案】C
3.若有定义int a[10]; 则对a数组元素的正确引用是【 】。
A) a[10] B) a(10) C) a[0] D) a[10.0]
【答案】C
【解析】四个选项中a[10] 下标越界;a(10) 不是数组元素的引用形式;a[10.0] 是错误的,因为下标不允许是实型常量。只有C正确,下标从0开始。
4.以下能对二维数组a进行正确初始化的语句是【 】。
A) int a[2][ ]={{1,0,1},{5,2,3}};B) int a[ ][3]={{1,2,3},{3,2,1}};
C) int a[2][4]={1,2,3},{4,5},{6}};D) int a[ ][ ]={1,2,3,4,5,6,7}
【答案】B
5.若有定义int s[ ][3]={1,2,3,4,5,6,7}; 则s数组第一维的大小是________ 。
A) 2 B) 3 C) 4 D) 不确定
【答案】B
6.若有定义char array[ ]="Child"; 则数组array的长度为【 】。
A) 4 B) 5 C) 6 D) 7
【答案】C
【解析】因为给array数组初始化是用字符串"Child",array数组中最后一个字符是 '\0',因此,数组长度为6。
7.以下选项中,不能正确赋值的是【 】。
A) char s1[10]; s1="China";B) char s2[ ]={'C','h','i','n','a'};
C) char s3[10]="China";D) char s3[10]={"China"};
【答案】A
【解析】因为s1 是数组名,代表数组的首地址,是常量,常量不能被赋值。
8.若有定义:char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为【 】。
A) 数组x和数组y等价 B) 数组x和数组y的长度相同
C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度
【答案】C
【解析】因为x数组初始化是用字符串"abcdefg",x数组的长度为8,y数组初始化是用7个字符,y数组的长度为7,所以,数组x的长度大于数组y的长度。
9.函数调用:strcat(strcpy(str1,str2),str3)的功能是【 】。
A) 将串str1复制到串str2中后再连接到串str3之后
B) 将串str1连接到串str2之后再复制到串str3之后
C) 将串str2复制到串str1中后再将串str3连接到串str1之后
D) 将串str2连接到串str1之后再将串str1复制到串str3中
【答案】C
10.下列程序的输出结果是___________。
#include "stdio.h"
#include "string.h"
void main( )
{ char st[20]="\"hello\"";
printf("%d\n",strlen(st));
}
A) 6 B) 7 C) 11 D) 12
【答案】B
二、填空题
1.若有以下定义:double m[20]; 则m数组元素的最小下标是______,最大下标是______。
【答案】0和19
2.在C语言中,二维数组元素在内存中的存放顺序是按_________ 存放的。
【答案】行
3.若有以下定义:int a[3][5]={{0,1,2,3,4},{3,2,1,0},{0}}; 则初始化后a[1][[2]的值是________,a[2][1]的值是_________ 。
【答案】1和0
4.若有以下定义:char s[100],d[100];int j=0,i=0; 且s 中已赋字符串,请填空以实现字符串复制。(注意:不得使用逗号表达式)
while (s[i]) { d[j]= _________ ;j++;}
d[j]=0;
【答案】s[i++]
5.下列程