请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 新浪微博
  • 腾讯微博
  • 手机版
  • 微信订阅号
    平凉学生网官方微信订阅号
    添加方式:
    1、搜索:微信号(PL-XSW
    2、扫描:扫描左侧二维码
    “学府科技”
  • 注册 / 登录
  • 快捷导航
    查看: 626|回复: 0

    Visual foxpro程序设计练习题

    [复制链接]

    签到天数: 12 天

    [LV.3]偶尔看看II

    214

    主题

    228

    帖子

    1239

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1239
    发表于 2017-3-17 19:01:13 | 显示全部楼层 |阅读模式

    1、 求[10,1000]内所有能被被7和9中至少一个数整除的整数之个数。 答案:236

    n=0

    for i=10 to 1000

    if mod(i,7)=0 or mod(i,9)=0

    n=n+1

    endi

    endf

    ?n

    2、 求[101,299]内所有能被2整除但不能同时被3和5整除的整数之和。 答案:18630

    s=0

    for i=101 to 299

    if mod(i,2)=0 and not (mod(i,3)=0 and mod(i,5)=0)

    s=s+i

    endi

    endf

    ?s

    3、求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。

    答案:18

    s=0

    for i=1 to 100

    s=s+1/i

    if s>=3.5

    exit

    endi

    endf

    ?i-1

    4、求100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于30000。

    答案:25

    s=0

    for i=1 to 100

    s=s+i^3

    if s>30000

    exit

    endi

    endf

    ?i

    5、求出100以内使得算式1*2+2*3+„+n*(n+1)的值小于5000的最大的自然数n。 答案:23

    s=0

    for i=1 to 100

    s=s+i*(i+1)

    if s>=5000

    exit

    endi

    endf

    ?i-1

    6、求出100以内使得算式1/(1*1)+1/(2*2)+„+1/(n*n)的值小于1.6的最大的自然数n。

    答案:21

    s=0

    for i=1 to 100

    s=s+1/i^2

    if s>=1.6

    exit

    endi

    endf

    ?i-1

    7、某国今年的人口总数为1亿,若以每年4%的速度递增,试求出至少要再过几年该国人口总数才会翻一翻。

    答案:18

    n=0

    x=1

    do while x<2

    x=x*(1+0.04)

    n=n+1

    enddo

    ?n

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

    答案:14

    s=0

    n=0

    do while s<=2345678

    s=s+3^n

    n=n+1

    enddo

    ?n

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

    答案:7

    n=0

    s=45678

    for i=3 to 22839 step 2

    if mod(s,i)=0

    n=n+1

    endif

    endfor

    ?n

    10、求出203267的所有真因子(即小于它本身的约数)中最大的因子数。 答案:6557

    s=203267

    for i=1 to int(203267/3)

    if mod(s,i)=0

    n=i

    endif

    endfor

    ?n

    11、求出20677和42067的最大公约数。

    答案:713

    for i=20677 to 1 step -1

    if mod(20677,i)=0 and mod(42067,i)=0

    exit

    endif

    endfor

    ?i

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

    答案:162

    s=0

    for i=1 to 100

    if mod(i,6)=0 or mod(i,8)=0

    s=s+sqrt(i)

    endif

    endfor

    ?round(s,0)

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

    答案:37

    for a=1 to 9

    for b=1 to 9

    if (a*10+b)*(b*10+a)=2701

    ?a*10+b

    return

    endif

    endfor

    endfor

    14、已知数列:1,2,4,7,11,16,„,其规律是相邻两项之差依次是1,2,3,4,5,„。

    试求出此数列中大于5000的最小的项。

    答案:5051

    a=1

    n=1

    do while a<5000

    a=a+n

    n=n+1

    enddo

    ?a

    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。 答案:20

    Dimension f(100)

    f(1)=1

    f(2)=4

    n=2

    do while f(n)< 87654321

    n=n+1

    f(n)=3*f(n-1)-f(n-2)

    enddo

    ?n

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

    答案:15

    h=100

    s=100

    n=1

    do while s<690

    h=h*3/4

    s=s+2*h

    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的字母个数。

    答案:16

    a=1

    n=0

    for i=1 to 25

    a=1/(a+i)

    if a<0.1

    n=n+1

    endif

    endfor

    ?n

    18、 回文指的是正读和反读都一样的一串字符,如121、1221。试求出

    [1421,4112]内所有回文数的和。

    答案:74250

    s=0

    for i=1421 to 4112

    if int(i/1000)=i%10 and int(i/100)%10= int(i%100/10)

    s=s+i

    endif

    endfor

    ?s

    19、求在[100,999]内所有不含数字0且各位数字之积被96整除的数之和。 答案:26640

    s=0

    for a=1 to 9

    for b=1 to 9

    for c=1 to 9

    if(mod(a*b*c,96)=0)

    s=s+a*100+b*10+c

    endi

    endf

    endf

    endf

    ?s


    20、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。

    答案:20610

    a=1001

    n=0

    s=0

    do while n<20

    if mod(a,4)=0 or mod(a,6)=0

    s=s+a

    n=n+1

    endif

    a=a+1

    enddo

    ?s


    21、若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求[2,99999]内所有自同构数之和。(提示:若x是m位同构数,则x的平方除以10的m次方的余数

    就是x)

    答案:101114

    s=0

    for i=2 to 999999

    if mod(i*i,10)=i or mod(i*i,100)=i or mod(i*i,1000)=i or

    mod(i*i,10000)=i or mod(i*i,100000)=i

    s=s+i

    endif

    endfor

    ?s

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

    答案:57

    s1=54322

    for i=1 to int(sqrt(54321))

    if(54321%i==0 )

    s=i+54321/i

    if(s<=s1)

    s1=s

    a=i

    endif

    endif

    endfor

    ?a

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

    m=0

    a=1

    for n=1 to 99

    a=a+n

    if a%4==0

    m=m+1

    endif

    endfor

    ?m

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

    答案:13

    c=98765432

    n=0

    do while c>0

    if(c%2==1)

    n=n+1

    endif

    c=int(c/2)

    enddo

    ?n

    25、对自然数A、B、C,若A<B<C且A*A+B*B=C*C,则称{A,B,C}为一组勾股弦数,其中A、B、C分别称为勾、股、弦。试求出弦为25000的勾股弦数组的个数。 答案:5

    n=0

    for b=12500 to 25000

    for a=1 to b-1

    if a*a+b*b=25000*25000

    n=n+1

    endif

    endfor

    endfor

    ?n

    26、求方程3x-7y=1在条件|x|<100且|y|<40下的整数解的个数。

    答案:26

    n=0

    for x=-99 to 99

    for y=-39 to 39

    if 3*x-7*y==1

    n=n+1

    endif

    endfor

    endfor

    ?n

    27、已知数列{f(n)}:f(1)=1,f(2)=4,当n=3,4,5,„时,f(n)=3*f(n-1)-f(n-2)。试求出100以内最大的自然数n使得此数列的前n项之和首次大于75364321。 答案:19

    dime f(100)

    f(1)=1

    f(2)=4

    s=5

    for n=3 to 100

    f(n)=3*f(n-1)-f(n-2)

    s=s+f(n)

    if s>75364321

    exit

    endif

    endfor

    ?n

    28、求100-200内的所有素数的个数。(素质是指只能被1和本身整除的数) 答案:21

    n=0

    for i=100 to 200

    for j=2 to i-1

    if(i%j==0)

    exit

    endif

    endfor

    if j==i

    n=n+1

    endif

    endfor

    ?n

    29、求1000-10000内的第50个素数。(素质是指只能被1和本身整除的数) 答案:1361

    n=0

    for i=1000 to 10000

    for j=2 to i-1

    if(i%j==0)

    exit

    endif

    endfor

    if j==i

    n=n+1

    endif

    if n==50

    exit

    endif

    endfor

    ?i

    30、编写程序,计算10000以内有多少个这样的数,其个位数为6且该数能被9整除。

    答案:111

    n=0

    for i=1 to 10000

    if i%10==6 and i%9==0

    n=n+1

    endif

    endfor

    ?n

    31、设某四位数的各位数字的平方和等于100,问共有多少个这种四位数? 答案:49

    n=0

    for i=1000 to 9999

    a=int(i/1000)

    b=int(i/100)%10

    c=int(i/10)%10

    d=i%10

    if a^2+b^2+c^2+d^2=100

    n=n+1

    endif

    endfor

    ?n

    32、把一张一元钞票,换成一分、二分和五分硬币,每种至少11枚,问有多少种方案?

    答案:13

    n=0

    for a=11 to 20

    for b=11 to 50

    for c=11 to 100

    if a*5+b*2+c=100

    n=n+1

    endif

    endfor

    endfor

    endfor

    ?n


    33、把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数最多的与硬币总数最少的枚数之差是多少?

    答案:73

    max=3

    min=300

    for a=1 to 20

    for b=1 to 50

    for c=1 to 100

    if a*5+b*2+c=100

    s=a+b+c

    if(s>max)

    max=s

    endif

    if(s<min)

    min=s

    endif

    endif

    endfor

    endfor

    endfor

    ?max-min


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|平凉学生网 ( 陇ICP备14001781号-1

    GMT+8, 2018-11-16 14:07 , Processed in 0.238387 second(s), 26 queries .

    Discuz! X3.2 Powered by © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表