习题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[]={x10x,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个初值说明是14列,所以第一维为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<iostream>
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<<c[i]<<'\t';
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,o0,′′};y,o,u,
B.chara[]={"toyou\0"};
C.chara[]="toyou\0";
D.chara[]=to0you;
【答案】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<iostream>
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<<k<<endl;
return0;}
【答案】strcmp比较数组k=p;
18.下面程序是删除输入的字符串中字符H,′请填空。
#include<iostream>
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<<strlen(strcpy(a,b));语句后的输出结果
________
【答案】6
20.有如下定义语句:intaa[][3]={12,23,34,4,5,6,78,89,45};,45在数组aa中的行列坐标各为

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。