自编程序设计题参考答案.docx
- 文档编号:28573049
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:15
- 大小:46.33KB
自编程序设计题参考答案.docx
《自编程序设计题参考答案.docx》由会员分享,可在线阅读,更多相关《自编程序设计题参考答案.docx(15页珍藏版)》请在冰豆网上搜索。
自编程序设计题参考答案
1.用输入对话框输入x,根据下式计算对应的y,并在窗体上输出y的值。
+sinxx>10
y=0x=10
2x3+6x<10
程序写在命令按钮Command1的Click事件中。
参考答案:
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=Val(InputBox("pleaseinputanumber"))
SelectCasex
CaseIs>10
y=Sqr(x)+Sin(x)
CaseIs=10
y=0
CaseIs<10
y=2*x^3+6
EndSelect
Printy
EndSub
2.
编写一个程序,根据上网时间计算上网费用,上机时间用输入对话框输入。
公式如下:
同时,为了鼓励多上网,每月最多不超过600元。
参考答案:
PrivateSubCommand1_Click()
DimtimesAsSingle,moneyAsSingle
times=Val(InputBox("pleaseinputanumber"))
SelectCasetimes
CaseIs<10
money=50
CaseIs<60
money=6*times
CaseIs>=60
money=4*times
EndSelect
Ifmoney>600Thenmoney=600
Printtimes,money
EndSub
3.计算s=1+x/2+x2/3+x3/4+…+xn-1/n;n,x值从键盘输入。
参考答案:
PrivateSubCommand1_Click()
DimnAsInteger,xAsSingle,sAsSingle,iAsInteger
x=Val(InputBox("pleaseinputx"))
n=Val(InputBox("pleaseinputn"))
s=0
Fori=1Ton
s=s+x^(i-1)/i
Nexti
Prints
EndSub
4.
用以下公式计算Sin(x)的值,当最后一项的绝对值小10-7时停止计算。
X由键盘输入。
程序写在窗体的click事件中。
参考答案:
PrivateSubCommand1_Click()
DimxAsSingle,sAsSingle,itemAsSingle,nAsInteger
x=Val(InputBox("pleaseinputx"))
s=0:
n=2:
item=x
WhileAbs(item)>0.0000001
s=s+item
item=-item*x*x/n/(n+1)
n=n+2
Wend
Prints
EndSub
5.编写程序,单击窗体时在窗体上打印出如下所示的图形(要求使用多重循环实现)。
*
***
*****
*******
*********
*******
*****
***
*
参考答案:
PrivateSubForm_click()
DimiAsInteger,jAsInteger
Fori=1To5
PrintSpace(5-i);
Forj=1To2*i-1
Print"*";
Nextj
Nexti
Fori=1To4
PrintSpace(i);
Forj=1To9-2*i
Print"*";
Nextj
Nexti
EndSub
6.编写一个程序,找出100到200之间所有的质数,并按五个数一行显示在窗体上,程序写在窗体的click事件中。
参考答案:
PrivateSubForm_click()
DimnAsInteger,kAsInteger,cAsInteger
Forn=101To199Step2
Fork=2ToInt(Sqr(n))
IfnModk=0ThenExitFor
Nextk
Ifk>Int(Sqr(n))Then
Printn;
c=c+1
IfcMod5=0ThenPrint
EndIf
Nextn
EndSub
7.计算下列表达值并在窗体上输出。
要求:
用输入对话框输入m和n(m≥n≥0);用Functionfact(xAsInteger)函数求x!
的值
m!
n!
(m-n)!
参考答案:
PrivateSubCommand1_Click()
DimnAsInteger,mAsInteger,sAsSingle
Do
m=Val(InputBox("pleaseinputm"))
n=Val(InputBox("pleaseinputn"))
LoopUntiln>0Andm>n
s=nfact(m)/(nfact(n)*nfact(n-m))
Prints
EndSub
PrivateFunctionnfact(xAsInteger)AsLong
DimtempAsLong,iAsInteger
temp=1
Fori=1Tox
temp=temp*i
Nexti
nfact=temp
EndFunction
8.编写一个自定义函数,用于把一个十进制整数转换为二进制,要求以字符串形式返回。
参考答案:
FunctionDTOB(nAsInteger)AsString
DimsAsString,cAsString
s=""
Whilen>0
c=Trim(Str(nMod2))
s=c+s
n=n\2
Wend
DTOB=s
EndFunction
9.编写一个自定义函数,用于把一个字符串形式的八进制数转换为十进制数,要求以数字形式返回。
参考答案:
FunctionOTOD(sAsString)AsInteger
DimnAsInteger,cAsInteger,iAsInteger,slenAsInteger
slen=Len(s)
Fori=1Toslen
c=Val(Mid(s,i,1))
n=n+c*8^(slen-i)
Nexti
OTOD=n
EndFunction
10.编写一个自定义函数,用于计算single类型一维数组的平均值。
参考答案:
FunctionavgArray(a()AsSingle,nAsInteger)AsSingle
DimiAsInteger,sAsSingle
s=0
Fori=1Ton
s=s+a(i)
Nexti
avgArray=s/n
EndFunction
11.编写一个自定义函数,用于判断一个数n是否为质数,如果为质数则函数返回true,否则返回false
参考答案:
Functionprime(nAsInteger)AsBoolean
DimkAsInteger
Fork=2ToInt(Sqr(n))
IfnModk=0ThenExitFor
Nextk
Ifk>Int(Sqr(n))Then
prime=True
Else
prime=False
EndIf
EndFunction
12.产生100个∈[3,300]的随机整数,先求它们的平均值,再将这些数中大于平均值的数按从小到大的顺序打印出来。
参考答案:
PrivateSubForm_click()
Dima(1To100)AsInteger,b(1To100)AsInteger
DimtAsInteger,bLenAsInteger,iAsInteger,jAsInteger
DimsumAsLong,avgAsSingle
sum=0
Fori=1To100
a(i)=Int(Rnd*298)+3
sum=sum+a(i)
Nexti
avg=sum/100
bLen=0
Fori=1To100
Ifa(i)>avgThen
bLen=bLen+1
b(bLen)=a(i)
EndIf
Nexti
Fori=1TobLen-1
Forj=i+1TobLen
Ifb(i)>b(j)Then
t=b(i)
b(i)=b(j)
b(j)=t
EndIf
Nextj
Nexti
Fori=1TobLen
Printb(i)
Nexti
EndSub
13.随机产生10个互不相等的二位正整数,并将这10个数按从小到大的顺序输出,程序写在窗体的click事件中。
参考答案:
PrivateSubForm_click()
Dima(1To10)AsInteger
DimiAsInteger,jAsInteger,tempAsInteger
a
(1)=Int(Rnd*90)+10
Fori=2To10
temp=Int(Rnd*90)+10
Forj=1Toi-1
Ifa(j)=tempThenExitFor
Nextj
Ifj>i-1Then
a(i)=temp
Else
i=i-1
EndIf
Nexti
Fori=1To10
Printa(i);
Nexti
Fori=1To9
Forj=i+1To10
Ifa(i)>a(j)Then
temp=a(i)
a(i)=a(j)
a(j)=temp
EndIf
Nextj
Nexti
Fori=1To10
Printa(i);
Nexti
EndSub
14.编写一个自定义过程,实现一个n阶矩阵的转置。
转置前的矩阵转置后的矩阵
12341111
12342222
12343333
12344444
参考答案:
Subtranspose(a()AsInteger,nAsInteger)
DimiAsInteger
DimjAsInteger,tAsInteger
Fori=2Ton
Forj=1Toi-1
t=a(i,j)
a(i,j)=a(j,i)
a(j,i)=t
Nexti
Nexti
EndSub
15.编写一个程序,实现如下功能,让用户通过inputbox输入一个大于等于6的偶数n,并在窗体上显示将n分解为两个质数之和的所有情况。
例如:
10=3+7和10=5+5等,程序写在窗体的click事件中。
参考答案:
PrivateSubForm_click()
DimnAsLong,n1AsLong,n2AsLong
DimkAsInteger
Do
n=Val(InputBox("pleaseinputanumber"))
LoopUntiln>6AndnMod2=0
Forn1=2Ton/2
Fork=2ToInt(Sqr(n1))
Ifn1Modk=0ThenExitFor
Nextk
Ifk>Int(Sqr(n1))Then
n2=n-n1
Fork=2ToInt(Sqr(n2))
Ifn2Modk=0ThenExitFor
Nextk
Ifk>Int(Sqr(n2))Then
Printn;"=";n1;"+";n2
EndIf
EndIf
Nextn1
EndSub
16.用户界面如图所示,用于将学生学过的单词在列表框中显示出来,现要求完成:
(1)单击“增加单词”按钮,将文本框Text1.Text中的单词添加到列表框中并显示列表框中的单词数;
(2)单击“删除单词”按钮,删除列表框中被选中的项并显示列表框中的单词数;
(3)单击“全部清除”按钮,删除列表框的全部选择项并显示列表框中的单词数;
(4)单击“退出”按钮,结束程序
部分程序代码如下:
PrivateSubForm_Load()
Label1.Caption="请输入单词"
Label2.Caption="单词数"
Command1.Caption="增加单词"
Command2.Caption="删除单词"
Command3.Caption="全部清除"
Command4.Caption="退出"
List1.AddItem"apple"
List1.AddItem"chinese"
List1.AddItem"child"
List1.AddItem"double"
List1.AddItem"park"
List1.AddItem"top"
Endsub
17.
现有1个成绩文件Cj1.txt,记录有学生的姓名和百分制成绩,格式如左下图,请设计一个程序将这个成绩文件中成绩小于60分的学生挑出来,按同样格式一起存入文件Bjg.txt中。
程序写在命令按钮Command1的Click事件中。
参考答案:
PrivateSubCommand1_Click()
DimsnameAsString,scoreAsInteger
Open"bjg.txt"ForOutputAs#1
Open"cj1.txt"ForInputAs#2
WhileNotEOF
(2)
Input#2,sname,score
Ifscore<60Then
Print#1,sname;",";score
Wend
Close#2
Close#1
EndSub
18.程序启动后,界面如右图所示:
a)在窗体的load事件中按如下要求设置图片框控件picture1内部坐标系:
左、右边横坐标分别为-100,100,上、下边纵坐标分别为100,-100。
b)输入两点坐标,单击“显示连线”命令按钮,显示坐标系、坐标原点和两点的连线。
privatesubform_load()
Picture1.scale(-100,100)-(100,-100)
endsub
Privatesubcommand1_click()
Dimx1assingle,y1assingle
Dimx2assingle,y2assingle
X1=val(text1.text):
Y1=val(text2.text)
X2=val(text3.text):
Y2=val(text4.text)
Picture1.line(-100,0)-(100,0)
Picture1.line(0,100)-(0,-100)
Picture1.currentx=0
Picture1.currenty=0
Picture1.print“(0,0)”
Picture1.line(x1,y1)-(x2,y2)
Endsub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 参考答案