第5章 数组习题参考答案.docx

上传人:b****8 文档编号:30676816 上传时间:2023-08-19 格式:DOCX 页数:20 大小:18.05KB
下载 相关 举报
第5章 数组习题参考答案.docx_第1页
第1页 / 共20页
第5章 数组习题参考答案.docx_第2页
第2页 / 共20页
第5章 数组习题参考答案.docx_第3页
第3页 / 共20页
第5章 数组习题参考答案.docx_第4页
第4页 / 共20页
第5章 数组习题参考答案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第5章 数组习题参考答案.docx

《第5章 数组习题参考答案.docx》由会员分享,可在线阅读,更多相关《第5章 数组习题参考答案.docx(20页珍藏版)》请在冰豆网上搜索。

第5章 数组习题参考答案.docx

第5章数组习题参考答案

第5章数组习题参考答案

第1题

'方法1

Dima(),b(),c()'定义a,b数组用于存放两组数据,C数组存放a,b相加的结果

a=Array(1,3,5,2,4,18,50,25)'a数组赋值

b=Array(5,27,30,35,60,41,87,33)'b数组赋值

n=UBound(a)'计算数组最大下标

Fori=0Ton'输出数组a

Printa(i);

Nexti

Print

Fori=0Ton'输出数组b

Printb(i);

Nexti

Print

ReDimc(0Ton)'定义(确定)数组c实际大小

Fori=0Ton

c(i)=a(i)+b(i)

Nexti

Fori=0Ton'输出数组c

Printc(i);

Nexti

Print

'方法2

Dima(0To7),b(0To7),c()'定义a,b数组存放两组数据,C数组存放a,b相加的结果

n=UBound(a)'计算数组最大下标

Fori=0Ton'数组a赋值、输出

a(i)=Val(InputBox("输入数据"))

Printa(i);

Nexti

Print

Fori=0Ton'输出数组b

b(i)=Val(InputBox("输入数据"))

Printb(i);

Nexti

Print

ReDimc(0Ton)'定义(确定)数组c实际大小

Fori=0Ton

c(i)=a(i)+b(i)

Nexti

Fori=0Ton'输出数组c

Printc(i);

Nexti

Print

第2题

'方法1

Dima()'定义a,b数组用于存放两组数据,C数组存放a,b相加的结果

x=Val(InputBox("输入行数"))

y=Val(InputBox("输入列数"))

ReDima(1Tox,1Toy)

Fori=1Tox'数组a赋值

Forj=1Toy

a(i,j)=Int(Rnd()*100)

Nextj

Nexti

Fori=1Tox'输出a数组

Forj=1Toy

Printa(i,j);

Nextj

Print

Nexti

Print

Max=a(1,1)'设最大数为a(1,1)

row=1'则最大数行下标为1

col=1'则最大数列下标为1

Fori=1Tox'求最大数max及其所在的行row、列col

Forj=1Toy

IfMax

Max=a(i,j)

row=i

col=j

EndIf

Nextj

Nexti

Print"最大数为:

";Max;"行为:

";row;"列为:

";col

'方法2

Dima()'定义a,b数组用于存放两组数据,C数组存放a,b相加的结果

x=Val(InputBox("输入行数"))

y=Val(InputBox("输入列数"))

ReDima(1Tox,1Toy)

Fori=1Tox

Forj=1Toy

a(i,j)=Int(Rnd()*100)'数组a赋值

Printa(i,j);'数组a输出

Nextj

Print

Nexti

Max=a(1,1)'设最大数为a(1,1)

row=1'则最大数行下标为1

col=1'则最大数列下标为1

Fori=1Tox'求最大数max及其所在的行row、列col

Forj=1Toy

IfMax

Max=a(i,j)

row=i

col=j

EndIf

Nextj

Nexti

Print"最大数为:

";Max;"行为:

";row;"列为:

";col

第3题

'方法1

Dima(1To10)'定义a数组存放10个数据

Fori=1To10'数组a赋值

a(i)=Int(Rnd()*100)

Nexti

Fori=1To10'输出数组a

Printa(i);

Nexti

Print

'数组元素数值交换

Fori=1To5

t=a(i)

a(i)=a(11-i)

a(11-i)=t

Nexti

Fori=1To10'输出交换后a数组各元素值

Printa(i);

Nexti

Print

'方法2

Dima(1To10)'定义a数组存放10个数据

Fori=1To10'数组a赋值

a(i)=Int(Rnd()*100)

Printa(i);'输出数组a

Nexti

Print

'数组元素数值交换

Fori=1To5

t=a(i)

a(i)=a(11-i)

a(11-i)=t

Nexti

Fori=1To10'输出交换后a数组各元素值

Printa(i);

Nexti

Print

'方法3

Dima(1To10)'定义a数组存放10个数据

Fori=1To10'数组a赋值

a(i)=Val(InputBox("输入数据"))

Printa(i);'输出数组a

Nexti

Print

'数组元素数值交换

Fori=1To5

t=a(i)

a(i)=a(11-i)

a(11-i)=t

Nexti

Fori=1To10'输出交换后a数组各元素值

Printa(i);

Nexti

Print

'方法4任意多个元素值交换

Dima()

n=Val(InputBox("输入数据个数"))

ReDima(1Ton)'定义a数组存放n个数据

Fori=1Ton'数组a赋值

a(i)=Int(Rnd()*100)

Printa(i);'输出数组a

Nexti

Print

'数组元素数值交换

Fori=1Ton\2

t=a(i)

a(i)=a(11-i)

a(11-i)=t

Nexti

Fori=1Ton'输出交换后a数组各元素值

Printa(i);

Nexti

Print

第4题

'方法1

Dima(0To10)AsInteger'定义a数组存放各分数段统计结果

n=Val(InputBox("输入学生人数"))

Fori=1Ton'数组a赋值

score=Val(InputBox("输入学生成绩"))

Printscore;

Ifscore<60Then

a(5)=a(5)+1

ElseIfscore<=69Then

a(6)=a(6)+1

ElseIfscore<=79Then

a(7)=a(7)+1

ElseIfscore<=89Then

a(8)=a(8)+1

ElseIfscore<=100Then

a(9)=a(9)+1

EndIf

Nexti

Print

Print"输出各分数段统计结果如下:

"

Print"<60人数";a(5)

Print"60~69人数";a(6)

Print"70~79人数";a(7)

Print"80~89人数";a(8)

Print"90~100人数";a(9)

'方法2

Dima(0To10)AsInteger'定义a数组存放各分数段统计结果

n=Val(InputBox("输入学生人数"))

Fori=1Ton'数组a赋值

score=Val(InputBox("输入学生成绩"))

Printscore;

m=score\10'构造m与数组a元素下标对应

Ifm<6Then

a(5)=a(5)+1

ElseIfm<7Then

a(6)=a(6)+1

ElseIfscore<8Then

a(7)=a(7)+1

ElseIfscore<9Then

a(8)=a(8)+1

ElseIfscore<=10Then

a(9)=a(9)+1

EndIf

Nexti

Print

Print"输出各分数段统计结果如下:

"

Print"<60人数";a(5)

Print"60~69人数";a(6)

Print"70~79人数";a(7)

Print"80~89人数";a(8)

Print"90~100人数";a(9)

'方法3

Dima(0To10)AsInteger'定义a数组存放各分数段统计结果

n=Val(InputBox("输入学生人数"))

Fori=1Ton'数组a赋值

score=Val(InputBox("输入学生成绩"))

Printscore;

m=score\10'构造m与数组a元素下标对应

a(m)=a(m)+1'm对应的分数段数组元素累加

Nexti

Fori=0To5'<60分的分数段数组元素累加

s=s+a(i)

Nexti

Print

Print"输出各分数段统计结果如下:

"

Print"<60人数";s

Print"60~69人数";a(6)

Print"70~79人数";a(7)

Print"80~89人数";a(8)

Print"90~100人数";a(9)

第5题

身份证号码数字编码表

'方法1

DimIDAsString'定义ID存放身份证号码

Dima(0To16)'定义a数组存放身份证号码数字

Dimw()'定义w数组存放加权因子

Dimy()'定义y数组存放第18位编码表校验码

w=Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)'a数组赋值

y=Array(1,0,x,9,8,7,6,5,4,3,2)'b数组赋值

ID=InputBox("输入身份证号码")

n=Len(ID)'计算身份证号码长度

Fori=1Ton'输出数组a

Char=Mid(ID,i,1)'获得身份证号码每一位字符

a(i-1)=Val(Char)'将身份证号码字符转化为数值

s=s+a(i-1)*w(i-1)'计算权求和sum(ai*wi)

Nexti

y18=sMod11'计算模y=mod(s,11)

Printy(y18)'输出校验码

第6题

Dima(1To30)AsLong'定义a数组存放数列各项

a

(1)=1

a

(2)=1

Fori=3To30'计算数列各项

a(i)=a(i-1)+a(i-2)

Nexti

Fori=1To30'输出数列各项

Printa(i);

Nexti

第7题

Dima(1To15)AsString'定义a数组存放产生的字符

a

(1)=Chr(Int(Rnd()*(90-65+1)+65))'产生第一个字符

Fori=2To15'产生其它的字符,比较相同后重新产生

a(i)=Chr(Int(Rnd()*(90-65+1)+65))'产生一个新的字符,

Forj=1Toi-1'新产生的字符与其前产生的字符比较

Ifa(i)=a(j)Then'若与其前产生的字符相同

i=i-1'则i值减1,达到重新产生的目的

ExitFor

EndIf

Nextj

Nexti

Fori=1To15'输出数组

Printa(i);

Nexti

Print

第8题

Dima()'定义a数组存放数据

n=Val(InputBox("数组大小"))'输入数组大小

ReDima(1Ton)'定义实际数组大小

Fori=1Ton

a(i)=Int(Rnd()*100)'数组赋值

Nexti

Fori=1Ton'数组输出

Printa(i);

Nexti

Print

x=Val(InputBox("插入数组的位置"))

y=Val(InputBox("输入插入的数据"))

n=n+1'计算新数组大小

ReDimPreservea(1Ton)'重新定义新数组大小,保留原数组元素值

Fori=nTox+1Step-1'从后向前,数组元素值依次后移

a(i)=a(i-1)'数组元素值后移动1位

Nexti

a(x)=y'将数据插入到指定的数组元素

Fori=1Ton'数组输出

Printa(i);

Nexti

Print

第9题

Dima()'定义a数组存放数据

n=Val(InputBox("数组大小"))'输入数组大小

ReDima(1Ton)'定义实际数组大小

Fori=1Ton

a(i)=Int(Rnd()*100)'数组赋值

Nexti

Fori=1Ton'数组输出

Printa(i);

Nexti

Print

y=Val(InputBox("输入删除的数据"))

p=0'默认删除的数不在数组中

Fori=1Ton'查找删除的数是否在数组中

Ifa(i)=yThen'若删除的数在数组中存在

p=1'则标记p为1

m=i'记录删除的数在数组中的位置m(下标)

ExitFor'结束查找

EndIf

Nexti

Ifp=1Then'若删除的数在数组中存在,则进行删除

n=n-1'重新设定数组元素个数

Fori=mTon'从m位置处,数组元素值依次前移

a(i)=a(i+1)'数组元素值前移动1位

Nexti

ReDimPreservea(1Ton)'重新定义新数组大小,保留原数组元素值

EndIf

Fori=1Ton'数组输出赋值

Printa(i);

Nexti

Print

第10题

'方法1

Dima()'定义a数组用于存放m*n矩阵数据

m=Val(InputBox("输入行数没m"))

n=Val(InputBox("输入列数n"))

ReDima(1Tom,1Ton)

Fori=1Tom'数组a赋值

Forj=1Ton

a(i,j)=Int(Rnd()*100)

Nextj

Nexti

Fori=1Tom'输出a数组

Forj=1Ton

Printa(i,j);

Nextj

Print

Nexti

Print

s1=0's1存放所有元素的和

Fori=1Tom'求所有元素的和

Forj=1Ton

s1=s1+a(i,j)'所有元素累加

Nextj

Nexti

s2=0's2存放非四周的所有元素和

Fori=2Tom-1'求除去四周的所有元素的和

Forj=2Ton-1

s2=s2+a(i,j)'非四周元素累加

Nextj

Nexti

s=s1-s2'求四周元素的和

Print"四周元素和为:

";s

'方法2

Dima()'定义a数组用于存放m*n矩阵数据

m=Val(InputBox("输入行数没m"))

n=Val(InputBox("输入列数n"))

ReDima(1Tom,1Ton)

Fori=1Tom'数组a赋值

Forj=1Ton

a(i,j)=Int(Rnd()*100)

Nextj

Nexti

Fori=1Tom'输出a数组

Forj=1Ton

Printa(i,j);

Nextj

Print

Nexti

Print

s1=0's1存放第一行所有元素的和

s2=0's2存放最后一行所有元素的和

Forj=1Ton'求第一行、最后一行元素的和

s1=s1+a(1,j)'第一行所有元素累加

s2=s2+a(m,j)'最后一行所有元素累加

Nextj

s3=0's3存放第一列、最后一列元素和

Fori=2Tom-1'求第一列、最后一列除去第一行、最后一行元素的和

s3=s3+a(i,1)+a(i,n)'第一列、最后一列元素累加

Nexti

s=s1+s2+s3'求四周元素和

Print"四周元素和为:

";s,s1,s2,s3

第11题

'方法1定义a、b分别存放运动员号码、成绩

Dima()'定义a数组号码

Dimb()'定义b数组存放成绩

a=Array("011","095","041","070","008","009","021","061","006","004")'a数组赋值

b=Array(12.4,11.1,13.4,12.1,12.4,10.4,14.4,15.1,15.4,11.4)'b数组赋值

n=UBound(a)'计算数组长度

Fori=0Ton'输出数组a,b

Printa(i);b(i)

Nexti

'比较交换法排序

Fori=0Ton-1

Forj=i+1Ton

Ifb(i)>b(j)Then

t=b(i):

b(i)=b(j):

b(j)=t'成绩交换

s=a(i):

a(i)=a(j):

a(j)=s'对应的号码交换

EndIf

Nextj

Nexti

Print"排序后成绩为:

"

Fori=0Ton'输出数组a,b

Printa(i);b(i)

Nexti

'方法2选择法排序,定义a、b分别存放运动员号码、成绩

Dima()'定义a数组号码

Dimb()'定义b数组存放成绩

a=Array("011","095","041","070","008","009","021","061","006","004")'a数组赋值

b=Array(12.4,11.1,13.4,12.1,12.4,10.4,14.4,15.1,15.4,11.4)'b数组赋值

n=UBound(a)'计算数组长度

Fori=0Ton'输出数组a,b

Printa(i);b(i)

Nexti

'选择法排序

Fori=0Ton-1

k=i

Forj=i+1Ton

Ifb(k)>b(j)Then

k=j

EndIf

Nextj

t=b(i):

b(i)=b(k):

b(k)=t'成绩交换

s=a(i):

a(i)=a(k):

a(k)=s'对应的号码交换

Nexti

Print"排序后成绩为:

"

Fori=0Ton'输出数组a,b

Printa(i);b(i)

Nexti

'方法3选择法排序,定义a数组为自定义数据类型,数组元素存放运动员号码与成绩

PrivateTypesport'自定义数据类型,ID存放运动员号码、score存放运动员成绩

idAsString*3'定义运动员号码字段

scoreAsSingle'定义运动员成绩字段

EndType

PrivateSubCommand1_Click()

Dima(1To10)Assport'定义a数组为自定义类型

DimsAssport'定义s变量自定义类型

n=3'UBound(a)'计算数组长度

Fori=1Ton'数组a元素赋值

a(i).id=InputBox("输入第"&i&"个号码")

a(i).score=Val(InputBox("输入第"&i&"个成绩"))

Nexti

Print"排序前成绩为:

"

Fori=1Ton'输出数组a元素值

Printa(i).id;a(i).score

Nexti

'比较交换法排序

Fori=1Ton-1

k=i

Forj=i+1Ton

Ifa(k).id>a(j).idThen

k=j

EndIf

Nextj

s=a(i):

a(i)=a(k):

a(k)=s'a数组元素值交换

Nexti

Print"排序后成绩为:

"

Fori=1Ton'输出数组a

Printa(i).id

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

当前位置:首页 > 成人教育 > 成考

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

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