第4章数组c++习题答案解析Word文档下载推荐.docx

上传人:b****2 文档编号:4741685 上传时间:2023-05-04 格式:DOCX 页数:17 大小:70.10KB
下载 相关 举报
第4章数组c++习题答案解析Word文档下载推荐.docx_第1页
第1页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第2页
第2页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第3页
第3页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第4页
第4页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第5页
第5页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第6页
第6页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第7页
第7页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第8页
第8页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第9页
第9页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第10页
第10页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第11页
第11页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第12页
第12页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第13页
第13页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第14页
第14页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第15页
第15页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第16页
第16页 / 共17页
第4章数组c++习题答案解析Word文档下载推荐.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第4章数组c++习题答案解析Word文档下载推荐.docx

《第4章数组c++习题答案解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第4章数组c++习题答案解析Word文档下载推荐.docx(17页珍藏版)》请在冰点文库上搜索。

第4章数组c++习题答案解析Word文档下载推荐.docx

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

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

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

【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以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};

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;

cout<

<

c[i]<

'

\t'

;

putchar('

\n'

);

return0;

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

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

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

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

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

图4-1第一次排序

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

图4-2第二次排序

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

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

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

B.chara[]={"

toyou\0"

};

C.chara[]="

D.chara[]=′toyou\0′;

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

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

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

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

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

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

A.intc[3][]

B.floatc[3,4]

C.doublec[3][4]

D.floatc(3)(4)

12.已知:

intc[3][4];

则对数组元素引用正确的是【】

A.c[1][4]

B.c[1.5][0]

C.c[1+0][0]

D.以上表达都错误

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

chara[]="

toyou"

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

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

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

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

D.a数组等价于b数组

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

二、填空题

1.若有说明:

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

则a数组第一维的大小是________。

【答案】3

2.设有数组定义:

chararray[]="

China"

则数组array所占的空间为________个字节。

【答案】6

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

intx[10]={0,2,4};

,则数组x在内存中所占字节数是________。

【答案】20

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

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;

【答案】k=p;

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

{chars[80];

inti,j;

gets(s);

for(i=j=0;

s[i]!

=′\0′;

if(s[i]!

=′H′)

{________}

s[j]=′\0′;

puts(s);

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

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

j++;

6.已知:

chara[20]="

abc"

b[20]="

defghi"

则执行cout<

strlen(strcpy(a,b));

语句后的输出结果为________。

7.有如下定义语句:

intaa[][3]={12,23,34,4,5,6,78,89,45};

则45在数组aa中的行列坐标各为________。

【答案】2和2

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

【答案】i*m+j+1

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

intk;

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

则语句for(k=0;

k<

3;

k++)cout<

a[k][k];

的输出结果是________。

【答案】951

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

987

654

321

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

10.已知:

chara[15],b[15]={"

Ilovechina"

则在程序中能将字符串Ilovechina赋给数组a的语句是________。

【答案】strcpy(a,b);

三、读程序写结果

1.程序代码如下

#include<

chararr[2][4];

strcpy(arr[0],"

you"

strcpy(arr[1],"

me"

arr[0][3]='

arr[0]<

【答案】you&

me

2.程序代码如下:

chara[]={'

a'

'

b'

c'

d'

e'

f'

g'

'

h'

\0'

inti,j;

i=sizeof(a);

j=strlen(a);

i<

"

"

j<

【答案】9,8

3.程序代码如下:

inti;

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

for(i=0;

a[2-i][i];

【答案】753

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

4.程序代码如下:

chara[30]="

nicetomeetyou!

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

a<

【答案】nicetoyou

5.程序代码如下:

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++;

count<

【答案】8,10

6.程序代码如下:

chara[30],b[30];

gets(a);

gets(b);

k=strcmp(a,b);

if(k>

0)puts(a);

elseif(k<

0)puts(b);

输入love

China

输出结果是?

【答案】love

【解析】strcmp(a,b)函数功能是比较a和b字符串的大小,比较是逐个字符的比较,比较方法是ASCII码值做减法,k='

l'

-'

C'

>

,所以结果输出字符串a。

四、编程题

1.编程实现功能:

删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

思路:

fun函数的2个形式参数,分别接收数组名,即数组的首地址,和数组中存放的原始数据的个数,fun函数对原始数组按题目处理后,在主函数中输出的数组a就是处理后的数组,这里函数之间参数传递属于地址传递。

程序代码如下:

constN=80;

intfun(inta[],intn)

{inti,j=1;

n;

if(a[j-1]!

=a[i])a[j++]=a[i];

returnj;

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

原始数组中的数据是:

19;

a[i]<

"

n=fun(a,n);

\n删除后,数组中的数据是:

2.编程实现功能:

从键盘上输入若干个学生的成绩,当输入负数时表示输入结束,计算学生的平均成绩,并输出低于平均分的学生成绩。

使用循环输入学生的成绩,注意循环条件有2个,分别是输入成绩个数大于数组的大小和输入成绩为负数时结束,同时记录输入成绩的个数n。

结束输入后,计算平均值和筛选小于60分的成绩并输出。

intmain()

{constN=800;

floatx[N],sum=0,ave,a;

intn=0,i;

输入学生成绩:

cin>

a;

while(a>

n<

N)

{sum+=a;

x[n]=a;

n++;

输入的"

n<

名学生成绩为:

for(i=0;

i<

i++)

x[i]<

cout<

ave=sum/n;

平均分:

ave<

低于平均分的成绩:

if(x[i]<

ave)cout<

3.编程实现功能:

对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码值之差。

例如:

输入的两个字符串分别为abcdefg和abceef,则输出为-1。

题目要求实现的功能,相当于字符串处理函数strcmp的功能,即:

图4-3字符串比较示意图

使用循环逐个比较两个字符串的每个字符,当字符出现不相等时,跳出循求不相同的两个字符的ASCII码值的差输出。

#include"

string.h"

{charstr1[80],str2[80],c;

inti=0,s;

gets(str1);

gets(str2);

while((str1[i]==str2[i])&

(str1[i]!

='

))

i++;

s=str1[i]-str2[i];

s<

return0;

4.编程实现功能:

求二维数组周边元素之和。

二维数组中的数据可以看成一个二维矩阵,例如下面的二维数组,输出周边元素之和为:

sum=48,用两个并列的for循环实现求累加和。

1234

2345

3456

4567

constM=4;

constN=4;

{inta[M][N],i,j,sum=0;

for(i=0;

M;

for(j=0;

j<

N;

j++)

cin>

a[i][j];

i++)/*求第1行和第4行元素和*/

{sum+=a[0][i];

sum+=a[M-1][i];

}

for(i=1;

M-1;

i++)/*求第1列和第4列元素和,

但不包括a[0][0],a[3][0],a[0][3],a[3][3]四个角上的元素*/

{sum+=a[i][0];

sum+=a[i][N-1];

}

二维数组周边元素之和为:

sum<

5.编程求出3阶方阵的两条对角线上元素之和。

{intarr[3][3]={0,2,2,3,4,4,5,6,6},a=0,b=0,i,j;

for(j=0;

j++)/*求主对角线上元素和*/

if(i==j)

a=a+arr[i][j];

i++)/*求次对角线上元素和*/

for(j=2;

j>

=0;

j--)

if(i+j==2)

b=b+arr[i][j];

主对角线元素和为:

次对角线元素和为:

b<

6.编程序求Fibonacci数列的前10项,并按每行3个数的格式输出该数列。

Fibonacci数列的定义为:

1(n=1)

1(n=2)

fn-1+fn-2(n>

2)

fn=

 

iomanip>

{inti;

longf[10]={1,1};

for(i=2;

30;

f[i]=f[i-2]+f[i-1];

for(i=0;

10;

{if(i%3==0)cout<

\n"

setw(12)<

f[i];

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2