vf程序设计练习题答案6.5

更新时间:2024-01-19 07:39:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

8、设等比数列:1,3,9,27,?。求使得此数列的前n项之和大于2345678的最小的自然数n。

s=0 && 用于求和 i=1 && 用于表示等比数列中的每一项 j=0 && 用于统计目前求和到了项的数目 do while s<=2345678 s=s+i i=i*3 j=j+1 enddo ?j

9、求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。

k=0 for i=2 to 45677 if mod(45678,i)=0 and mod(i,2)!=0 &&判断i是否为45678的非平凡因子同时又是奇数 k=k+1 endif next ?k 10、求出203267的所有真因子(即小于它本身的约数)中最大的因子数。 for n=1 to 203266 if mod(203267,n)=0 k=n && 变量k用于保存最大的约数 endif next ?k 11、求出20677和42067的最大公约数。

for n=1 to 20677 if mod(20677,n)=0 and mod(42067,n)=0 k=n && 变量k用于保存最大公约数 endif next ?k

12、求前[1,100]内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)

s=0 && 用于求平方根的和 for n=1 to 100 if mod(n,6)=0 or mod(n,8)=0 s=s+sqrt(n) endif next ?round(s,0) && 对和进行四舍五入

13、求所有符合算式ab*ba=2701的最小的两位数ab(即a*10+b)。其中a、b是1~9之间的一位整数

for a=1 to 9 for b=1 to 9 if (a*10+b)*(b*10+a)=2701 &&将两位数进行交换数字再进行相乘判断 k=min(a*10+b,b*10+a) endif next next ?k

14、已知数列:1,2,4,7,11,16,?,其规律是相邻两项之差依次是1,2,3,4,5,?。试求出此数列中大于5000的最小的项。

n=1 &&数列各项 i=1 &&相领两项之差 do while n<=5000 n=n+i i=i+1 enddo ?n 15、已知数列{f(n)}:f(1)=1,f(2)=4,当n=3,4,5,?时,f(n)=3*f(n-1)-f(n-2)。试求出100以内最小的自然数n使得此数列的第n项大于87654321。 dime f(100) f(1)=1 f(2)=4 for n=3 to 100 f(n)=3*f(n-1)-f(n-2) if f(n)>87654321 exit endif next ?n

16、一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最大的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程超过690米。(若不超过690则为15次,若超过690则为16次)

s=100 n=1 do while s<=690 s=s+2*100*(3/4)^n n=n+1 enddo ? n-1 17、设有用26个字母表示的26个表达式:a=1,b=1/(a+1),c=1/(b+2),?,z=1/(y+25)。试求出这26个字母中其值小于0.1的字母个数。 dime s(26) s(1)=1 k=0 for n=2 to 26 s(n)=1/(s(n-1)+n-1) if s(n)<0.1 k=k+1 endif next ? k 18、回文指的是正读和反读都一样的一串字符,如121、1221。试求出[1421,4112]内所有回文数的和。 s=0 for n=1421 to 4112 a=int(n/1000) b=mod(int(n/100),10) c=mod(int(n/10),10) d=mod(n,10) if a=d and b=c s=s+n endif next ?s 19、求在[100,999]内所有不含数字0且各位数字之积被96整除的数之和。

s=0 for n=100 to 999 i=int(n/100) j=mod(int(n/10),10) k=mod(n,10) if i*j*k!=0 and mod(i*j*k,96)=0 s=s+n endif next ?s 20、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。

s=0 n=1001 i=1 do while i<=20 if mod(n,4)=0 or mod(n,6)=0 s=s+n i=i+1 endif n=n+1 enddo ? s 21、若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求[2,99999]内所有自同构数之和。(提示:若x是m位同构数,则x的平方除以10的m次方的余数就是x)

s=0 for x=2 to 99999 i=len(alltrim(str(x))) &&将x转换成字符串求长度 if x=mod(x^2,10^i) s=s+x endif next ?s

22、求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较小的一个数。(提示:设A<=B,当A越大时A+B越小)

23、已知数列:1、2、4、7、10、15、?,其特点是:相邻两项之差恰好构成自然数列:1、2、3、4、5、?。求此数列的前100项中能被4整除的项的个数。

n=1 &&数列各项的值 c=0 &&用于统计能被4整除项的个数 for x=1 to 100 && x表示两项之差,同时也可以表示有多少项数字 if mod(n,4)=0 c=c+1 endif n=n+x next ?c

24、求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。(提示:模拟人工计算的“2除取余”法)

x=98765432 c=0 do while x>0 if mod(x,2)=1 c=c+1 endif x=int(x/2) enddo ?c c=54321 for a=1 to int(sqrt(c)) b=int(c/a) if a<=b and a*b=c s=a endif next ?s

25、对自然数A、B、C,若A

s=0 for x=1000 to 9999 step 2 a=int(x/1000) b=mod(int(x/100),10) c=mod(int(x/10),10) d=mod(x,10) if mod(a+b+c+d,30)=0 s=s+x endif next ?s

39、编写程序,求1到5000之间的能被5整除的前若干个偶数之和,当和值大于500时退出,输出该和值。

s=0 for x=1 to 5000 if mod(x,10)=0 s=s+x if s>500 exit endi endi next ?s

40、一个数如果刚好与它所有的因子之和相等,则称该数为一个\完数\,如:6=1+2+3,则6就是一个完数。求出200到500之间所有的完数之和。

s=0 for x=200 to 500 n=0 for y=1 to x-1 if mod(x,y)=0 n=n+y endi next if x=n s=s+x endi next ?s

41、编写程序,求在5000以内能被17或者23整除的正整数的个数。

c=0 for x=1 to 5000 if mod(x,17)=0 or mod(x,23)=0 c=c+1 endi next ?c

42、编写程序,求四位数的偶数中,所有各位数字之和是15的倍数的数的个数。

n=0 for x=1000 to 9999 step 2 a=int(x/1000) b=mod(int(x/100),10) c=mod(int(x/10),10) d=mod(x,10) if mod(a+b+c+d,15)=0 n=n+1 endif next ?n

43、编写程序,计算在0~50的范围内有多少个数,其每位数的乘积大于每位数的和。

n=0 for x=0 to 50 a=int(x/10) b=x if a*b>a+b n=n+1 endi next ?n

44、用一元纸币兑换一分、两分和五分的硬币,要求兑换硬币的总数为60枚,问共有多少种换法?(注:在兑换中,一分、两分或五分的硬币数可以为0枚)

n=0 for x=0 to 60 for y=0 to 60 for z=0 to 60 if x+2*y+5*z=100 and x+y+z=60 n=n+1 endi next next next ?n

45、编写程序,求出100到500之间同时满足除5余4和除7余2条件的数的个数。

n=0 for x=100 to 500 if x%5=4 and x%7=2 n=n+1 endi next ?n

46、有5羊4犬3鸡2兔值钱1496,4羊2犬6鸡3兔值钱1175,3羊1犬7鸡5兔值钱958,2羊3犬5鸡1兔值钱861,求鸡值多少钱?

for a=1 to 300 for b=1 to 300 for c=1 to 170 d=861-2*a-3*b-5*c if 4*a+2*b+6*c+3*d=1175 and 3*a+b+7*c+5*d=958 and 5*a+4*b+3*c+2*d=1496 ?c exit endif endfor endfor endfor

47、编写程序,求出3到100之间的所有非偶数非素数的数之和。

s=0 for x=3 to 100 step 2 for y=2 to x-1 if x%y=0 s=s+x exit endi next next ?s

48、有50个学生一起买小吃,共花钱200元,其中每个大学生花5元,每个中学生花3元,每个小学生花2元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的)?

n=0 for x=1 to 48 for y=1 to 48 for z=1 to 48 if x*5+y*3+z*2=200 and x+y+z=50 n=n+1 endi next next next ?n

49、编写程序,统计1000~9999之间的所有满足以下条件的四位数的个数。该数是一个完全平方数,且其第1、2位数字之和为10,第3、4位数字之积为18。

n=0 for x=1000 to 9999 a=int(x/1000) b=int(x/100) c=int(x/10) d=x y=int(sqrt(x)) if x=y^2 and a+b=10 and c*d=18 n=n+1 endi next ?n

50、编写程序,求一正整数等差数列的前五项的立方和,该数列前四项之和是26、之积是880。

for a=1 to 5 for d=1 to 4 if 4*a+6*d=26 and a*(a+d)*(a+2*d)*(a+3*d)=880 ?a^3+ (a+d)^3+(a+2*d)^3+(a+3*d)^3+(a+4*d)^3 endif next next

51、s=1!+2!+3!+4! ??+n! 求s小于12345678的最大值。

s=0 i=1 p=1 do while s<12345678 p=p*i s=s+p i=i+1 enddo ?s-p

52、abc是一个3位整数,且 b=a+c,求满足条件的整数的和

s=0 for x=100 to 999 a=int(x/100) b=int(x/10) c=x if b=a+c s=s+x endi next ?x

本文来源:https://www.bwwdw.com/article/uuxo.html

Top