第4章-数组c++-习题答案解析.docx

上传人:b****9 文档编号:75217 上传时间:2022-10-02 格式:DOCX 页数:22 大小:49.80KB
下载 相关 举报
第4章-数组c++-习题答案解析.docx_第1页
第1页 / 共22页
第4章-数组c++-习题答案解析.docx_第2页
第2页 / 共22页
第4章-数组c++-习题答案解析.docx_第3页
第3页 / 共22页
第4章-数组c++-习题答案解析.docx_第4页
第4页 / 共22页
第4章-数组c++-习题答案解析.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

第4章-数组c++-习题答案解析.docx

《第4章-数组c++-习题答案解析.docx》由会员分享,可在线阅读,更多相关《第4章-数组c++-习题答案解析.docx(22页珍藏版)》请在冰豆网上搜索。

第4章-数组c++-习题答案解析.docx

习题4

一、单项选择题

1.若有说明inta[3][4];则a数组元素的非法引用是【】

A.a[0][2*1]

B.a[1][3]

C.a[4-2][0]

D.a[0][4]

【答案】D

【解析】数组下标从0开始,a[0][4]的列下标越界。

2.在C++语言中,引用数组元素时,其数组下标的数据类型允许是【】

A.整型常量

B.整型表达式

C.整型常量或整型表达式

D.任何类型的表达式

【答案】C

3.以下不正确的定义语句是【】

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={′1′,′2′,′3′,′4′,′5′};

D.charc2[]={x1′0′x,a′′x,8′′};

【答案】B

【解析】初始值的个数大于数组的大小,系统会出现编译错误。

4.对以下说明语句的正确理解是【】

inta[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5]

B.将5个初值依次赋给a[0]至a[4]

C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确

【答案】B

5.若有说明:

inta[][4]={0,0};则下面不正确的叙述是【】

A.数组a的每个元素都可得到初值0

B.二维数组a的第一维大小为1

C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小

D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值

【答案】D

【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,

本题中,有2个初值说明是1行4列,所以第一维为1。

元素a[0][0]和a[0][1]赋初值为0,

其余元素初值系统默认为0。

6.以下能对二维数组c进行正确的初始化的语句是【】

A.intc[3][]={{3},{3},{4}};

B.intc[][3]={{3},{3},{4}};

C.intc[3][2]={{3},{3},{4},{5}};

D.intc[][3]={{3},{},{3}};

【答案】B

【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案错误。

C

答案中初始值行数多于数组大小中的行大小,也是错误的。

另外初始化时,初值之间不能有

空位置,故D错误。

7.以下不能对二维数组a进行正确初始化的语句是【】

A.inta[2][3]={0};

B.inta[][3]={{1,2},{0}};

C.inta[2][3]={{1,2},{3,4},{5,6}};

D.inta[][3]={1,2,3,4,5,6};

【答案】C

8.阅读下面程序,则程序段的功能是【】

#include

usingnamespacestd;

intmain()

{

intc[]={23,1,56,234,7,0,34},i,j,t;

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

{

t=c[i];j=i-1;

while(j>=0&&t>c[j])

{c[j+1]=c[j];j--;}

c[j+1]=t;

}

for(i=0;i<7;i++)

cout<

putchar('\n');

return0;

}

A.对数组元素的升序排列

B.对数组元素的降序排列

C.对数组元素的倒序排列

D.对数组元素的随机排列

【答案】B

【解析】每层外层for循环结束会增加对一个元素的排序,确定c[0],c[1]的大小顺序,如图

4-1所示。

c[0]c[1]c[2]c[3]c[4]c[5]c[6]

231562347034

1<23

231562347034

图4-1第一次排序

第二次将c[2]分别与前2两个元素比较,插入最前面,确定c[0],c[1],c[2]的大小顺序,如

图4-2所示。

c[0]c[1]c[2]c[3]c[4]c[5]c[6]

231562347034

1<56

23112347034

23<56

232312347034

t=56

562312347034

图4-2第二次排序

以此类推,外层6次循环后,将无序的数组实现大到小的降序排列。

9.下列选项中错误的说明语句是【】

A.chara[]={′t′,′o′0,′′};y′,′o′,′u′,′

B.chara[]={"toyou\0"};

C.chara[]="toyou\0";

D.chara[]=′to0y′ou;

【答案】D

10.下述对C++语言字符数组的描述中错误的是【】

A.字符数组的下标从0开始

B.字符数组中的字符串可以进行整体输入/输出

C.可以在赋值语句中通过赋值运算符“=对”字符数组整体赋值

D.字符数组可以存放字符串

【答案】C

11.以下二维数组c的定义形式正确的是【】

A.intc[3][]

B.floatc[3,4]

C.doublec[3][4]

D.floatc(3)(4)

【答案】C

12.已知:

intc[3][4];则对数组元素引用正确的是【】

A.c[1][4]

B.c[1.5][0]

C.c[1+0][0]

D.以上表达都错误

【答案】C

13.若有以下语句,则正确的描述是【】

chara[]="toyou";

charb[]={′t′,′o′,′y′,′o′,′u′};

A.a数组和b数组的长度相同

B.a数组长度小于b数组长度

C.a数组长度大于b数组长度

D.a数组等价于b数组

【答案】C

【解析】a数组中存放的是字符串,数组大小为6个字节空间,分别存放′t′,′o′,和′′y\0′′,,′o′,′u′

b数组的长度为5个字节空间,只存放′t′,′o′,,′5y个′字,′符o。

′,′u′

二、填空题

14.若有说明:

inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是________。

【答案】3

15.设有数组定义:

chararray[]="China";则数组array所占的空间为________个字节。

【答案】6

16.假定int类型变量占用两个字节,其有定义:

intx[10]={0,2,4};,则数组x在内存中所占

字节数是________。

【答案】20

17.下面程序的功能是输出数组s中最大元素的下标,请填空。

#include

usingnamespacestd;

intmain()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])________

cout<

return0;}

【答案】k=p;

18.下面程序是删除输入的字符串中字符′H,′请填空。

#include

usingnamespacestd;

intmain()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!

=0′′;i++)

if(s[i]!

=′H′)

{________}

s[j]=0′′;

puts(s);

return0;}

【答案】s[j++]=s[i];

【解析】此处相当于补充了2条语句,等价于s[j]=s[i];j++;。

19.已知:

chara[20]="abc",b[20]="defghi";则执行cout<

为________。

【答案】6

20.有如下定义语句:

intaa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为

________。

【答案】2和2

21.若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]

位于数组的第一个位置上)________。

【答案】i*m+j+1

22.定义如下变量和数组:

intk;

inta[3][3]={9,8,7,6,5,4,3,2,1};

则语句for(k=0;k<3;k++)cout<

【答案】951

【解析】定义的二维数组可以描述一个方阵:

987

654

321

语句功能是实现该方阵主对角线上元素的输出。

23.已知:

chara[15],b[15]={"Ilovechina"};则在程序中能将字符串Ilovechina赋给数组a的

语句是________。

【答案】strcpy(a,b);

三、读程序写结果

1.程序代码如下

#include

usingnamespacestd;

intmain()

{

chararr[2][4];

strcpy(arr[0],"you");

strcpy(arr[1],"me");

arr[0][3]='&';

cout<

return0;

}

【答案】you&me

2.程序代码如下:

#include

usingnamespacestd;

intmain()

{

chara[]={'a','b','c','d','e','f','g','h','\0'};

inti,j;

i=sizeof(a);

j=strlen(a);

cout<

return0;

}

【答案】9,8

3.程序代码如下:

#include

usingnamespacestd;

intmain()

{

inti;

inta[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)

cout<

return0;

}

【答案】753

【解析】程序功能是实现一个方阵次对角线上元素的输出。

24.程序代码如下:

#include

usingnamespacestd;

intmain()

{

chara[30]="nicetomeetyou!

";

strcpy(a+strlen(a)/2,"you");

cout<

return0;

}

【答案】nicetoyou

25.程序代码如下:

#include

usingnamespacestd;

intmain()

{

intk[30]={12,324,45,6,768,98,21,34,453,456};

intcount=0,i=0;

while(k[i])

{

if(k[i]%2==0||k[i]%5==0)

count++;

i++;

}

cout<

return0;

}

【答案】8,10

26.程序代码如下:

#include

usingnamespacestd;

intmain()

{

chara[30],b[30];

intk;

gets(a);

gets(b);

k=strcmp(a,b);

if(k>0)puts(a);

elseif(k<0)puts(b);

return0;

}

输入love

China

输出结果是?

【答案】love

【解析】strcmp(a,b)函数功能是比较a和b字符串的大小,比较是逐个字符的比较,比较方

法是ASCII码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1