版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程 序 设 计 题 选1、求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。set talk offclears=0for n=1 to 100 s=(s+1)/n 改正:s=s+1/n if s=3.5 loop 改正:exit endifendfor? n-1set talk onreturn 运行结果:182、 求100以内最小的自然数n,使得从1开始的连续n个自然数的倒数之和大于3.6。set talk offclears=0for n=1 to 100s=s+1/nif s3.6 loop 改正:exitendifendfor? nset talk onr
2、eturn运行结果:213、求50以内最大的自然数n,使得从102开始的连续n个偶数之和小于3000。set talk offclears=0for n=1 to 50a=100+2*n s=s*a 改正:s=s+a if s=3000 loop 改正:exit endifendfor? n-1set talk onreturn运行结果:234、求50以内最小的自然数n,使得从102开始的连续n个偶数之和大于2000。set talk offclears=0for n=1 to 50a=102+2*n 改正:a=100+2*ns=s+aif s2000 loop 改正:exitendifend
3、for? nset talk onreturn运行结果:175、 求出100以内使得算式1*2+2*3+n*(n+1)的值小于5000的最大的自然数n。set talk offclears=0for n=1 to 100a=n*(n+1)s=s+aif s5000 exitendifendfor? n 改正:? n-1set talk onreturn运行结果:236、 求出100以内使得算式1*2+2*3+n*(n+1)的值大于6000的最小的自然数n。set talk offclear s=0for n=1 to 100 a=n*(n+1) s=s+a if s6000 loop 改正:e
4、xit endifendfor? nset talk onreturn运行结果:267、求出100以内使得算式1+(1+2)+(1+2+n)的值小于1000的最大的自然数n。set talk offclears=0t=0for n=1 to 100 s=s+n t=t+s if t1000 exit endifendfor? n 改正:? n-1set talk onreturn运行结果:178、 求出100以内最大的奇数n使得算式(1-1/2)+(1/3-1/4)+(1/n-1/(n+1)的值小于0.68。 set talk off clear s=0 for n=1 to 100 step
5、 2 a=1/n-1/(n+1) s=s+a if s0.68 exit endif endfor ? n-2 set talk on return 运行结果:359、某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。 set talk off clear s=1 for n=2001 to 2100 s=s*1.03 if s=2 改正:if s=2 loop 改正:exit endif endfor ? n set talk on return 运行结果:20249、设等比数列:1,2,4,8,。求使得此数列的前n项之和大于100000的
6、最小的自然数n。 set talk off clear a=1 s=1 改正:s=0 for n=1 to 100 s=s+a if s100000 exit endif a=2+a 改正:a=a*2 endfor ? n set talk on return 运行结果:1710、设等比数列:1,2,4,8,。求使得此数列的前n项之和小于2345678的最大的自然数n。 set talk off clear a=1 s=0 for n=1 to 100 s=s+a if s=2345678 exit endif a=2+a 改正:a=a*2 endfor ? n 改正:? n-1 set ta
7、lk on return 运行结果:2111、求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。 set talk off clear a=45678 n=0 for b=3 to a step 2 if mod(b,a)=0 改正:if mod(a,b)=0 n=n+1 endif endfor ? b 改正:? n set talk on return 运行结果:712、求出20677和42067的最大公约数。 set talk off clear a=20677 b=42067 for d=1 to a if mod(a,d)=0 and mod(b,d)=0
8、 max=b 改正:max=d endif endfor ? d 改正:max set talk on return 运行结果:71313、求前1,100内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)。 set talk off clear s=0 for n=1 to 100 if mod(n,6)=0 and mod(n,8)=0 改正:if mod(n,6)=0 or mod(n,8)=0 s=sqrt(s+n) 改正:s= s+sqrt(n) endif endfor ? round(s,0) set talk on return 运行结果:16214
9、、求所有符合算式ab*ba=2701的最小的两位数ab(即a*10+b)。其中a、b是19之间的一位整数。 set talk off clear for x=11 to 99 a=x/10 改正:a=int(x/10) b=mod(x,10) y=10*a+b 改正:y=10*b+a if x*y=2701 exit endif endfor ? x set talk on return 运行结果:3715、已知数列:1,2,4,7,11,16,,其规律是相邻两项之差依次是1,2,3,4,5,。试求出此数列中大于5000的最小的项。 set talk off clear a=1 for n=0
10、 to 1000 a=a+n if a5000 loop 改正:exit endif endfor ? n 改正:? a set talk on return 运行结果:505116、已知数列:1,2,4,7,11,16,,其规律是相邻两项之差依次是1,2,3,4,5,。试求出此数列中小于6000的最大的项。 set talk off clear a=0 改正:a=1 for n=0 to 1000 if a+n6000 exit endif a=a+n endfor ? a set talk on return 运行结果:599617、已知数列f(n):f(1)=1,f(2)=4,当n=3,
11、4,5,时,f(n)=3*f(n-1)-f(n-2)。试求出100以内最小的自然数n使得此数列的第n项大于87654321。 set talk off clear dimension 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 loop 改正:exit endif endfor ? n set talk on return 运行结果:2018、求出100以内最大的自然数n,使得从1开始的连续n个自然数的立方之和小于999999。 set talk off clear s=0 for n=1 t
12、o 100 a=n*n*n s=s+a if s999999 改正:if s678 exit endif endfor? nset talk onreturn运行结果:1320、设有用26个字母表示的26个表达式:a=1,b=1/(a+1),c=1/(b+2),z=1/(y+25)。试求出这26个字母中其值小于0.1的字母个数。set talk offclearlett=1n=0for k=1 to 26 改正:for k=1 to 25 lett=1/lett+k 改正:lett=1/(lett+k) if lett54321 n=n+1 endif f1=f2 f2=f3 f3=f1 改正
13、:f3=fendfor? nset talk onreturn“运行结果:523、已知一个由分数组成的数列:1/2,3/5,8/13,21/34,其特点是:从其中第2个分数起,每个分数的分子都是前一分数的分子分母之和而其分母都是其分子与前一分数的分母之和。试求出此数列的前25项中其值大于0.618的项数。set talk offclearf1=1f2=2n=0for k=1 to 25 f=f1/f2 if f0.618 n=n+1 endif f1=f2 改正:f1=f1+f2 f2=f1 改正:f2=f1+f2endfor? nset talk onreturn运行结果:2024、回文指的
14、是正读和反读都一样的一串字符,如121、1221。试求出1421,4112内所有回文数的和。set talk offclears=0for x=1421 to 4112 a=x/1000 改正:a=int(x/1000) b=int(x-a*1000)/100) c=int(x-a*1000-b*100)/10) d=x-a*1000-b*100-c*10 if a=d and b=c s=s*x 改正:s=s+x endifendfor? sset talk onreturn运行结果:7425025、求出1234,6789内中间两位数字之和等于首尾两位数字之积的数的个数。set talk o
15、ffclearn=0for x=1234 to 6789 a=int(x/1000) b=int(x-a*1000)/100 改正:b=int(x-a*1000)/100) c=int(x-a*1000-b*100)/10 改正:c=int(x-a*1000-b*100)/10) d=x-a*1000-b*100-c*10 if b+c=a*d n=n+1 endifendfor? nset talk onreturn运行结果:17526、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。set talk offclears=0k=0x=1000do
16、 while k=20 改正:do while k20 x=x+1 if mod(x,4*6)=0 改正:if mod(x,4)=0 or mod(x,6)=0 s=s+x k=k+1 endifenddo? sset talk onreturn运行结果:2061027、若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如144是完全平方数,因为它等于12的平方。求1000,9999内所有完全平方数的和。set talk offclears=0for x=1000 to 3000 y=sqrt(x) 改正: y=int(sqrt(x) 或改下一语句为 if x=int(y)*int(y
17、) if x=y*y s=s+x endifendfor? x 改正:? sset talk onreturn运行结果:4353928、若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求2,99999内所有自同构数之和。(提示:若x是m位同构数,则x的平方除以10的m次方的余数就是x)set talk offclears=0for x=2 to 99999 y=x*x m=len(ltrim(str(x) & 设x是m位数 if mod(y,10*m)=x 改正:if mod(y,10*m)=x s=s+x endifen
18、dfor? y 改正:? sset talk onreturn运行结果:10111429、求满足条件a*b=54321且使a+b的值最小的自然数对a、b中较大的一个数。(提示:设a0r=mod(a,p)if r=1n=1 改正:n=n+1endifa=int(a/p)enddo? nset talk onreturn运行结果:1332、4087求出将十进制整数98765432等值转换为二进制形式表示后其中数字0的个数。(提示:模拟人工计算的“2除取余”法)set talk offcleara=98765432p=2n=0do while a=0 改正:do while a0r=mod(a,p)
19、if r=0n=p+1 改正:n=n+1endifa=int(a/p)enddo? nset talk onreturn运行结果:1433、 求出将十进制整数99887766554等值转换为十六进制形式表示后其中字母c的个数。(提示:模拟人工计算的“16除取余”法)set talk offcleara=99887766554p=16n=0do while a=0r=mod(a,p)if r=11 改正:if r=12n=n+r 改正:n=n+1endifa=int(a/p)enddo? nset talk onreturn运行结果:234、对自然数a、b、c,若abc且a*a+b*b=c*c,
20、则称a,b,c为一组勾股弦数,其中a、b、c分别称为勾、股、弦。试求出弦为25000的勾股弦数组的个数。set talk offclearc=25000n=1 改正:n=0for a=1 to cb=int(sqrt(c*c-a*a)if a*a+b*b=c*c 改正:if a*a+b*b=c*c and abn=n+a 改正:n=n+1endifendfor? nset talk onreturn运行结果:535、4094对自然数a、b、c,若abc且a*a+b*b=c*c,则称a,b,c为一组勾股弦数,其中a、b、c分别称为勾、股、弦。试求出弦为1300的勾股弦组数。set talk of
21、fclearc=1300n=0for a=1 to cb1=sqrt(c*c-a*a)b=int(b1)if b=b1 改正:if b=b1 and abn=n+b 改正:n=n+1endifendfor? nset talk onreturn运行结果:740、求方程3x-7y=1在条件|x|100且|y|40下的整数解的个数。set talk offclearn=0for x=-99 to 99y=int(3*x-1)/7)if 3*x-7*y=1 or abs(y)40 改正: if 3*x-7*y=1 and abs(y)40n=n+x 改正:n=n+1endifendfor? nset
22、 talk onreturn运行结果:2641、求方程3x-7y=1在条件|x|100且|y|40下的所有整数解的|x|+|y|的最大值。set talk offclearmax=140 改正:max=0for x=-99 to 99y=int(3*x-1)/7)z=abs(x+y) 改正:z=abs(x)+abs(y)if 3*x-7*y=1 and abs(y)z 改正:if 3*x-7*y=1 and abs(y)40 and maxzmax=zendifendfor? maxset talk onreturn运行结果:12742、求1001000内的第10个素数。(素质是指只能被1和本
23、身整除的数)set talk offclean=0k=0for i=100 to 1000f=1for j=2 to i 改正:for j=2 to i-1if mod(i,j)=0f=0exitendifendforif f=1n=ik=k+i 改正:k=k+1if k=10exitendifendifendfor? nreturn运行结果:14943、对自然数a、b、c,若abc且a*a+b*b=c*c,则称a,b,c为一组勾股弦数,其中a、b、c分别称为勾、股、弦。试求出弦为2500的勾股数组中abc的值最大为多少?。set talk offclearc=2500max=0for a=1
24、 to cb=int(sqrt(c*2-a*2) 改正:b=int(sqrt(c*2-a*2)if a*a+b*b=c*c and aa+b+c 改正:if maxx+y 改正:if maxx+ymax=x+yendifendifendforendfor? maxset talk onreturn运行结果:4947、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求100,300之间能被其因子数目整除的数的个数。set talk offcleac=0for n=100 to 300s=0for i=1 to n -1 改正:for i=1 to
25、 nif int(i/10)=0 改正:if int(i/10)=i/10 或改为 if mod(i,10)=0s=s+1endifendforif mod(n,s)=0c=c+1endifendfor? cset talk onreturn运行结果:1948、分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 50,90 且分母能被3整除的真分数共有多少个.set talk offclean=1 改正:n=0for a=50 to 90for b=50 to 90if mod(b,3)=0 改正:if mod(b,3)=0 and abn=n+1endifendfo
26、rendfor? nset talk onreturn运行结果:28749、分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 50,90 且分母能被3整除、分子能被5整除的真分数共有多少个.set talk offclean=1 改正:n=0for a=50 to 89for b=50 to 90if mod(b,3)=0 改正:if mod(b,3)=0 and mod(a,5)=0 and a0r=int(a/b) 改正:r=mod(a,b)b=r 改正:a=ba=b 改正:b=renddo? aset talk onreturn运行结果:7353、利用分解质因
27、数的方法求出18000中含有质因数的个数(相同的重复计数,例如,180中含有5个质因数:2、2、3、3、5)。set talk offclearx=18000n=0k=1 改正:k=2do while x1if mod(x,k)=0n=n+1x=int(x/k)exit 改正:loopendifk=k+1enddo? nset talk onreturn运行结果:354、分子分母为正整数,分子小于分母且分子分母无公因数的分数称为最简真分数。对于分数的分母取值范围为 50,90 时的最简真分数共有多少个.set talk offclean=0for a=2 to 89 &分子for b=50 t
28、o 90&分母if ab 改正:if aimin=iendifendifendfor? minset talk onreturn运行结果:152156、50个小学生按至50序号顺时针围成一圈,做出局游戏,老师站在圈外顺时针从第一个人数起,每数到5时,这人从圈里出来,继续数1,2,3,4,5,数到第5个学生时,他就出局,已出局的位置不再参加计数,直至所有的学生出局为止,问最后一个出局的学生序号是多少号。set talk offcleadime a(50)for i=1 to 50a(i)=0 改正: a(i)=i endfork=0for i=1 to 50p=1 &每趟报数do while p
29、50 k=0 改正: k=1endifif ak0p=p+1endifenddoak=0endfor? kset talk offreturn运行结果:1957、水仙花数是指这样的数,其各位数字的立方和等于该数本身,如:153=13+53+33。编写程序,计算从100年开始到2000年为止,共有多少个年号是水仙花数年号。set talk offclean=1for i=100 to 2000a=int(i/1000)b=int(i-a*1000)/100)c=mod(i,100) 改正:c=int(i-a*1000-b*100)/10)d=mod(i,10)if a*a+b*b+c*c=i 改
30、正: if a*a*a+b*b*b+c*c*c=in=n+1endifendfor? nreturn运行结果:458、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求所有两位绝对素数的和。set talk offcleas=0for i=10 to 99j=mod(i,10) 改正:j=mod(i,10)*10+int(i/10)f1=1for k=2 to i 改正:for k=2 to i-1if mod(i,k)=0f1=0endifendforf2=1for k=2 to j-1if mod(j,k)=0f2=0endifendforif f1=1
31、改正:if f1=1 and f2=1s=s+iendifendfor? sreturn运行结果:42959、设某四位数的各位数字的平方和等于100,问共有多少个这种四位数?set talk offclean=0for x=1000 to 9999 a=int(x/1000) b=int(x-a*1000)/100) c=_ int(i-a*1000-b*100)/10) d=mod(x,10) if _ n=n+1 endifendfor? nset talk onreturn运行结果:4960、设某四位数的各位数字的立方和等于100,问满足这种条件的四位数且是素数的数共有多少个?set t
32、alk offclean=0for x=1000 to 9999 f=1 for i=2 to int(sqrt(x) if _ mod(x,i)=0 f=0 exit endif endfor if f=1 a=int(x/1000) b=int(x-a*1000)/100) c=int(mod(x,100)/10) d=mod(x,10) if _ a*3+b*3+c*3+d*3=100 n=n+1 endif endif endfor? nset talk onreturn运行结果:461、把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数为50枚的兑换方案有多少种
33、?set talk offclea_ n=1for yi=1 to 100 for er=1 to 50 for wu=1 to 20 if _and _=50 yi+er*2+wu*5=100 yi+er+wu n=_ n+1 endif endfor endforendfor? nset talk onreturn运行结果:1262、 把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数最多的与硬币总数最少的枚数之差是多少?set talk offcleamin1=10000max1=0for yi=1 to 100 for er=1 to 50 for wu=1 to
34、 20 if _=100 yi+er*2+wu*5=100 t=_ yi+er+wu if tmax1 _ max1=t endif if min1t min1=t endif endif endfor endforendfor? max1-min1set talk onreturn运行结果:7363、找满足以下条件: x2+y2+z2=412 且x+y+z之值最大的三个正整数x,y,z, 求x+y+z之值.set talk offcleamax=0for x=0 to 41 for y=0 to 41 for z=0 to 41 if _ x2+y2+z2=412 if _ maxx+y+z max=x+y+z endif endif endfor endforendfor? _ maxset talk onreturn运行结果:7164、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产科科长考试题及答案
- 生理学输血试题及答案
- 瑞昌小学毕业考试题目及答案
- 辅警制度培训课件
- 2026 年初中英语《语法填空》专项练习与答案 (100 题)
- 2026年深圳中考语文阅读提分专项试卷(附答案可下载)
- 游戏题目及答案大全
- 2026年深圳中考数学中等生提分试卷(附答案可下载)
- 基本逻辑考题题库及答案
- 2026年深圳中考历史考场实战模拟试卷(附答案可下载)
- 《护理学基础》-15-标本采集
- HG∕T 3792-2014 交联型氟树脂涂料
- 型钢斜抛撑支护方案
- 英文绘本故事Brown.Bear.Brown.Bear.What.Do.You.See
- 高一下学期期中语文试题汇编:写作
- 高中期末家长会
- (高清版)JTGT 3371-01-2022 公路沉管隧道设计规范
- 日语假名的罗马字打字法及其发音一览
- 风机系统巡检内容及标准
- 《如何给未来的自己写一封信》小学四五年级语文习作
- 新生儿高血糖护理课件
评论
0/150
提交评论