VF30道程序设计题参考答案.docx
《VF30道程序设计题参考答案.docx》由会员分享,可在线阅读,更多相关《VF30道程序设计题参考答案.docx(19页珍藏版)》请在冰豆网上搜索。
VF30道程序设计题参考答案
1求圆的面积
clea
inpu'请输入半径='tor
ifr>=0
s=pi[]*r^2
?
's=',s
else
?
'此时半径无意义'
endif
retu
2求分段函数的值
clea
inpu'请输入x='tox
docase
casex>0
y=2*x+5
casex=0
y=-x
casex<0
y=x
endcase
?
'y=',y
settalkon
retu
3输入一个成绩判断等级
clea
input'请输入成绩='tox
ifx<=100andx>=0
docase
casex<60
?
'不及格'
casex<70
?
'及格'
casex<80
?
'中'
casex<90
?
'良'
otherwise
?
'优秀'
endcase
endif
ifx>100orx<0
?
'成绩无效'
endif
retu
4输入多个成绩判断等级
clea
dimea[6]
fori=1to6
inpu'请输入成绩:
'toa[i]
?
':
',str[a[i],3]
ifa[i]<=100anda[i]>=0
docase
casea[i]<60
?
'不及格'
casea[i]<70
?
'及格'
casea[i]<80
?
'中'
casea[i]<90
?
'良'
otherwise
?
'优秀'
endcase
endif
ifa[i]>100ora[i]<0
?
'成绩无效'
endif
endfor
retu
5求和1到100的和
clea
s=0
fori=1to100
s=s+i
endfor
?
's=',s
retu
61to100乘
clea
s=1
fori=2to100
s=s*i
endfor
?
's=',s
retu
71+3+……+99
clea
s=0
fori=1to99step2
s=s+i
endfor
?
's=',s
retu
81-2+3-……-100
clea
s=0
fori=1to100
s=s-(-1)^i*i
endfor
?
's=',s
retu
91+1/2+2/3+3/5+……前十项和
clea
s=1
a=1
b=1
fori=1to9
t=a
a=b
b=t+b
s=s+a/b
endfor
?
's=',s
retu
10.1+2!
+3!
+
clea
s=0
t=1
fori=1to10
t=t*i
s=s+t
endif
?
's=',s
retu
11.对学生表中所有入学成绩≥650分的学生免去贷款
clea
opendatabase教学管理
use学生
if入学成绩>=650
?
姓名,'免去贷款'
endif
retu
12.输出图形
******************
******************
******************
******************
第一个
clea
fort=1to4
fori=1tot
?
?
'*'
endfor
?
endfor
retu
下面是第五个图形
clea
fort=4to1step-1
?
space[4-t]
fori=1tot
?
?
'*'
endfor
endfor
retu
下面是第三个图形
clea
fort=1to4
?
space[4-t]
fori=1to2*t-1
?
?
'*'
endf
endf
retu
13.判断一个整数是否素数
clea
input'请输入x='tox
fori=2tox-1
ifmod[x,i]=0
?
x,'不是素数'
exit
endif
endfor
Ifi>x-1
?
x,'是素数'
endif
retu
14.判断十个整数是否素数
clea
dimea(10)
forj=1to10
input'请输入x='toa(j)
?
fori=2toa[j]-1
ifa[j]/i=int(a[j]/i)
exit
endif
endfor
ifi>a[j]-1
?
a[j],'是素数'
else
?
a[j],'不是素数'
endif
endfor
retu
15.找出两个数的大数和小数
clea
dimea[2]
fori=1to2
input'请输入x='toa[i]
Endfor
ifa[1]>=a[2]
?
a[1]
else
?
a[2],'较大'
endif
retu
16.找出三个数的最大数和最小数
clea
input'请输入一个数:
'tox
storextomax,min
fori=2to3
input'请输入一个数:
'tox
ifmax<=x
max=x
else
min=x
endif
endfor
?
'最大数:
',max
?
'最小数:
',min
retu
17.找出十个数的最大数和最小数
clea
dimea[10]
fori=1to10
input'请输入x='toa[i]
endfor
forj=9to1step-1
fori=1toj
ifa[i]<=a[i+1]
t=a[i]
a[i]=a[i+1]
a[i+1]=t
endif
endfor
endfor
?
'最大值',a[1]
?
'最小值',a[10]
retu
18.找出2×3矩阵中的最大数和最小数
clea
dimea[2,3]
fori=1to2
forj=1to3
input'请输入x='toa[i,j]
endfor
endfor
fori=1to1
forj=1to2
ifa[i,j]>=a[i,j+1]
t=a[i,j]
a[i,j]=a[i,j+1]
a[i,j+1]=t
endif
endfor
endfor
forj=1to3step2
fori=1to1
ifa[i,j]>=a[i+1,j]
t=a[i,j]
a[i,j]=a[i+1,j]
a[i+1,j]=t
endif
endfor
endfor
?
'最小值=',a[1,1]
?
'最大值=',a[2,3]
retu
19.对三个整数从大到小排序
clea
dimea[3]
fori=1to3
input'请输入x='toa[i]
endfor
forj=2to1step-1
fori=1toj
ifa[i]<=a[i+1]
t=a[i]
a[i]=a[i+1]
a[i+1]=t
endif
endfor
endfor
fori=1to3
space[2]
?
a[i]
endf
retu
20.对十个整数从大到小排序(用选择法和起泡法两种方法
clea
dimea[10]
fori=1to10
input'请输入x='toa[i]
endfor
forj=9to1step-1
fori=1toj
ifa[i]<=a[i+1]
t=a[i]
a[i]=a[i+1]
a[i+1]=t
endif
endfor
endfor
fori=1to10
space[2]
?
a[i]
endfor
retu
21.输出Fibonacci(斐波那契)数列的前十项
clea
dimea[10]
fori=1to10
ifi<3
a[i]=1
else
a[i]=a[i-2]+a[i-1]
endif
?
a[i]
endfor
?
retu
22.输出杨辉三角的前十行
clea
dimeaa(10,10)
fori=1to10
?
space(20-2*i)
forj=1toi
ifj>1.and.j
aa[i,j]=aa(i-1,j-1)+aa(i-1,j)
else
aa(i,j)=1
endif
?
?
space[1]+str(aa[i,j],4)
endfor
?
endfor
retu
23.对2×3矩阵转置
clea
dimea[2,3]
fori=1to2
forj=1to3
input'请输入数值='toa[i,j]
endfor
endfor
dimeb[3,2]
forj=1to3
fori=1to2
b[j,i]=a[i,j]
?
?
b[j,i]
endfor
?
endfor
retu
24.求三位数中的所有水仙花数(即指一个三位数,其各位数字立方和等于该数本身)
clea
fora=1to9
forb=0to9
forc=0to9
ifa^3+b^3+c^3=100*a+10*b+c
?
100*a+10*b+c
endif
endfor
endfor
endfor
retu
25.求100以内的所有完数(即一个数恰好等于除它本身外的所有因子之和)
clea
fora=1to100
s=0
fori=1toa-1
ifa/i=int[a/i]
s=s+i
endif
endfor
ifa=s
?
s
endif
endfor
retu
26.已知三角形的三边(从键盘输入),求其面积(S^2=p(p-a)(p-b)(p-c),p=(a+b+c)/2)
clea
input'请输入边长='toa
input'请输入边长='tob
input'请输入边长='toc
p=(a+b+c)/2
m=p*(p-a)*(p-b)*(p-c)
?
's=',sqrt(m)
retu
27.求二元方程的根(分三种情况:
两个不等实根,两个相等实根,两个不等虚根)
clea
i=val['i']
input'请输入系数='toa
input'请输入系数='tob
input'请输入系数='toc
j=b^2-4*a*c
docase
casej>0
x1=(-b+sqrt(j))/(2*a)
x2=(-b-sqrt(j))/(2*a)
?
'x1=',x1
?
'x2=',x2
casej=0
x=(-b)/(2*a)
?
'x=',x
otherwise
?
'存在两个不等虚根'
endcase
retu
28.输入任意一个五位数,前后对应位置上的数据进行交换重新排列(例:
25984→48952)
clea
inpu'请输入一个五位数:
'tob
dimea[5]
a[5]=int[b/10000]
i=int[b/1000]
a[4]=mod(i,10)
j=int[b/100]
a[3]=mod[j,10]
a[1]=mod[b,10]
d=(b-a[1])/10
a[2]=mod(d,10)
?
space
(2)
fork=1to5
?
?
str(a[k],1)
endfor
retu
29.找出一个3x3矩阵的"鞍点",即该位置上的元素在该行上最大,在该列上最小(也有可能没有鞍点)
clea
dimea(3,3)
form=1to3
forn=1to3
inpu'请输入矩阵值='toa[m,n]
endfor
endfor
fori=1to3
max=a[i,1]
t=i
k=1
forj=1to3
ifmax=max=a[i,j]
t=i
k=j
endif
endfor
min=a[1,k]
forz=1to3
ifmin>=a[z,k]
min=a[z,k]
t1=z
endi
endf
ift1=l
?
'存在鞍点=',a[t,k]
endif
endfor
30.求S(n)=a+aa+aaa+...+aaa....aaa(其中有n个a)之值,a是一个数字,n和a由键盘键入(例如:
2+22+222+22222+22222,此时n=5)
clea
input'请输入a='toa
input'请输入n='ton
s=0
m=0
fori=1ton
m=m+a*10^(i-1)
s=s+m
endfor
?
's=',s
retu