第04章 数组习题参考答案.docx
- 文档编号:29663760
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:22
- 大小:19.45KB
第04章 数组习题参考答案.docx
《第04章 数组习题参考答案.docx》由会员分享,可在线阅读,更多相关《第04章 数组习题参考答案.docx(22页珍藏版)》请在冰豆网上搜索。
第04章数组习题参考答案
第4章数组习题参考答案
第1题
'方法1随机数赋值
Dimn%,max%,min%,i%,p!
Dima()AsInteger'定义评委打分数组
n=Val(InputBox("输入评委人数"))'评委人数应大于2
ReDima(1Ton)AsInteger
Fori=1Ton
a(i)=Int(Rnd()*(100-50+1)+50)'数组a赋值
Printa(i);'输出a数组
s=s+a(i)'数组元素累加
Nexti
max=a
(1):
min=a
(1)'设最大数、最小数为a
(1)
Fori=2Ton
Ifmax Ifmax Nexti p=(s-max-min)/(n-2) Print"选手得分为: ";p '方法2输入评委打分 Dimn%,max%,min%,i%,p! Dima()AsInteger'定义评委打分数组 n=Val(InputBox("输入评委人数")) ReDima(1Ton)AsInteger Fori=1Ton a(i)=Val(InputBox("评委"&i&"打分"))'数组a赋值 Printa(i);'输出a数组 s=s+a(i)'数组元素累加 Nexti Print max=a (1): min=a (1)'设最大数、最小数为a (1) Fori=2Ton Ifmax Ifmax Nexti p=(s-max-min)/(n-2) Print"选手得分为: ";p 第2题 '方法1 Rem计算方法: 诞生年代除以12,取余数.如果能整除,余数视为零. Rem按照下列数字表对应生肖动物: Rem01234567891012 Rem猴鸡狗猪鼠牛虎兔龙蛇马羊 DimNF%,num% Dima()'定义生肖数组 a=Array("猴","鸡","狗","猪","鼠","牛","兔","龙","蛇","马","羊") NF=Val(InputBox("输入出生年份")) num=NFMod12 Print"出生年份生肖为: "&a(num) 第3题 '方法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) 第4题 身份证号码数字编码表 '方法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)'输出校验码 第5题 '方法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 第6题 '方法1基本处理 Dima()AsInteger'定义a数组用于存放数据 n=Val(InputBox("输入行数n")) ReDima(1Ton,1Ton)'定义a数组大小(行列数) Fori=1Ton'数组每行赋初值 a(i,1)=1'数组第1列元素赋值、 a(i,i)=1'对角线元素赋值 Nexti Fori=3Ton'数组元素计算赋值 Forj=2Toi-1 a(i,j)=a(i-1,j-1)+a(i-1,j) Nextj Nexti Fori=1Ton'输出多行 Forj=1Toi'输出一行 Printa(i,j); Nextj Print Nexti '方法2三角形格式输出 Dima()AsInteger'定义a数组用于存放数据 n=Val(InputBox("输入行数n")) ReDima(1Ton,1Ton)'定义a数组大小(行列数) Fori=1Ton'数组每行赋初值 a(i,1)=1'数组第1列元素赋值、 a(i,i)=1'对角线元素赋值 Nexti Fori=3Ton'数组元素计算赋值 Forj=2Toi-1 a(i,j)=a(i-1,j-1)+a(i-1,j) Nextj Nexti Fori=1Ton'输出多行 Forj=1Toi'输出一行 PrintTab(40-i*3+j*6);a(i,j); Nextj Print Nexti '方法3算法优化,三角形格式输出 Dima()AsInteger'定义a数组用于存放数据 n=Val(InputBox("输入行数n")) ReDima(1Ton,1Ton)'定义a数组大小(行列数) Fori=1Ton Forj=1Toi Ifj=1Ori=jThen a(i,j)=1'数组第1列元素赋值、对角线元素赋值 Else a(i,j)=a(i-1,j-1)+a(i-1,j)'数组其他元素赋值 EndIf PrintTab(40-i*3+j*6);a(i,j);'输出数组元素 Nextj Print Nexti 补充习题 第1题 设有如下两组数据: (1)1,3,5,2,4,18,50,25 (2)5,27,30,35,60,41,87,33 编写一个程序,把上面两组数据分别读入两个数组中,然后把两个数组中对应下标的元素相加,即1+5,3+27,……,25+33,并把相应的结果放入第三个数组中,最后输出第三个数组的值。 '方法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题 有一个n×m的矩阵,编写程序,找出其中最大的那个元素所在的行和列,并输出其值及行号和列号。 '方法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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第04章 数组习题参考答案 04 数组 习题 参考答案