第七章数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章数组

(一)选择题

【例7-1】要求定义具有8个、int类型元素的一维数组,错误的定义语句是________。

A.int n= 8;B.#define N 3

int a[n];int a[2*N+2];

C.int a[ ]={0,1,2,3,4,5,6,7};D.int a[1+7]={0};

解析:

(1)在选项B中数组a[2*N+2]的方括号内是常量表达式,因此是正确的。

(2)选项C中,通过赋初值确定a数组的大小。

(3)选项D中,a[1+7]的方括号内是常量表达式,并给a数组的8个元素赋初值0。

(4)选项A中,n是变量,不是常量,虽然n有值也不合法。

答案:A

【例7-2】若有以下定义语句:int a[ ]={1,2,3,4,5,6,7,8,9,10};则值为5 的表达式是________。

A.a[5] B.a[a[4]] C.a[a[3]] D.a[a[5]]

解析:

(1)选项A中,元素a[5]的值是6。

(2)选项B中,元素a[4]的值是5,因此a[a[4]] 就是a[5],其值为6。

(3)选项C中,元素a[3]的值是4,因此a[a[3]] 就是a[4],其值为5。

(4)选项D中,a[a[5]] 就是a[6],其值为7。

答案:C

【例7-3】以下语句中:当字符串s1和s2相等时,能够输出“OK”的是________。

A.if(s1==s2) printf(“OK”);

B.if(!strcmp(s1,s2)) puts(“OK”);

C.if(s1[0]==s2[0]) printf(“OK”);

D.if(strcmp(s1,s2)) puts(“OK”);

解析:比较字符串不能直接使用关系运算符,例如以s1>s2,s1

答案:B

【例7-4】以下数组的定义中,________是错误的。

A.int a[10]={‘0’,’1’,’2’,’3’,’4’,’5’};

B.char a[10]={65,66,67,68,69};

C.char a[5]=“hello”;

D.char a[6]=“hello”;

解析:C语言中字符数据和整形数据之间可以通用,所以,选项A、B是正确的。选项C的字符串常量“hello”需要6个字节的存储空间,而数组的长度是5,所以选项C是错误的。

答案:C

【例7-5】以下程序的输出结果是________。

main( )

{int a[5]={1,2,3,4,5},i;

for(i=1;i<=5;i++)

printf(“%d”,a[i]);

}

A.12345 B.01234 C.不确定的值D.23451

解析:本程序输出了a[1]到a[5]的值,其中a[5]下标越界,输出的值不确定。

答案:C

【例7-6】以下选项中,不能将字符串正确赋给数组的是________。

A.char str[ ]={“china”};

B.char str[ ]=“china”;

C.char str[ ]={‘c’, ‘h’, ‘i’, ‘n’, ‘a’};

D.char str[6]={ ‘c’, ‘h’, ‘i’, ‘n’, ‘a’};

解析:

(1)C语言中允许在定义语句中给字符数组以字符串常量作为初值,此时,字符串常量外侧的大括号可有可无。采用这种赋初值方式时,只要有存储空间,系统就会自动在其末尾加入串结束标志’\0’。选项A、B都未指定具体空间,系统将按字符串中实际的字符个数再加上一个(’\0’),来定义数组的大小。因此选项A和B都是正确的。

(2)选项C是以单个字符的形式为字符数组赋初值,并以字符个数来确定数组的大小,相当于定义了具有5个元素的一维数组。因为所赋初值的末尾没有串结束标志,所以不能作为字符串使用。

(3)选项D在赋初值的形式上与选项C看似一样,但因数组元素的个数定义为6,而所赋初值字符的个数只有5个。在这种情况下,系统会自动在其后加入一个’\0’。所以选项D也是正确的。

答案:C

【例7-7】以下程序的输出结果是________。

main( )

{char ss[16]="test\0\n\"" ;

printf("%d,%d\n",strlen(ss),sizeof(ss));}

A.4,16 B.7,7 C.16,16 D.4,7

解析:

(1)程序中定义了一个有16个元素的字符型一维数组ss,并为它赋有初值。C语言中的字符串都是借助于字符数组来存储的,并以’\0’作为串结束标志。

(2)库函数strlen用于求字符串的长度,即第一个’\0’前面的字符个数。在本例中数组ss在定义时开辟了16个字节的存储单元,无论ss中是否存了数据、存多少数据,它占的字节数固定为16。

答案:A

(二)阅读程序题:

【例7-1】以下程序的输出结果是________。

#include

main( )

{char b[ ]=“abcde”;

b[2]=‘0’; puts(b);

}

解析:

(1)程序中定义了一个字符数组b,并给它赋予了字符串“abcde”。

相关文档
最新文档