《数据库技术与应用》(VFP)期末考试题型一、判断题1 删除数据库时库表也一定被删除。
F2修改表的结构必须以独占或非只读方式打开表。
T3执行GO TOP后,RECNO()的值一定等于1。
F4一个表只能有一个M型和G型字段。
F5 VFP执行命令USE,就是把内存中对当前表所作的修改保存到外存的表文件中。
F6建立关联的两个表都必须先建立索引。
F7 VFP有交互操作与程序执行两类工作方式。
T8表文件的所有字段的值均存放在表文件文件(.DBF)中。
F9 LIST与DISP命令的功能完全一样F10 RETURN 命令和 CANCEL 命令的功能相同。
F11 VFP中只能引用一维或二维数组,但数组中各个元素的值的类型可以不同。
T12 在浏览窗口中,可以为记录加注删除标记。
也可以取消删除标记。
T13 结构复合索引文件是打开表时自动打开。
T14 LOCATE命令和SEEK命令都需要事先对表进行索引。
F15视图文件是保存数据工作期所设置的工作环境的文件。
T16 LOOP语句使执行转向循环语句头部继续循环。
T17 不允许将用户画的一幅画放入到表文件的记录中。
F18 "照片"字段的类型可以修改为C型的。
F19 只有数据库表才能建立主索引。
T二、编程填空题1、求[10,1000]内所有能被被7和9中至少一个数整除的整数之个数。
答案:236n=0for i=10 to 1000if mod(i,7)=0 or mod(i,9)=0n=n+1endiendf?n2、求[101,299]内所有能被2整除但不能同时被3和5整除的整数之和。
答案:18630s=0for i=101 to 299if mod(i,2)=0 and not (mod(i,3)=0 and mod(i,5)=0)s=s+iendiendf?s3、求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。
答案:18s=0for i=1 to 100s=s+1/iif s>=3.5exitendiendf?i-14、求100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于30000。
答案:25s=0for i=1 to 100s=s+i^3if s>30000exitendiendf?i5、求出100以内使得算式1*2+2*3+…+n*(n+1)的值小于5000的最大的自然数n。
答案:23s=0for i=1 to 100s=s+i*(i+1)if s>=5000exitendiendf?i-16、求出100以内使得算式1/(1*1)+1/(2*2)+…+1/(n*n)的值小于1.6的最大的自然数n。
答案:21s=0for i=1 to 100s=s+1/i^2if s>=1.6exitendiendf?i-17、某国今年的人口总数为1亿,若以每年4%的速度递增,试求出至少要再过几年该国人口总数才会翻一翻。
答案:18n=0x=1do while x<2x=x*(1+0.04)n=n+1enddo?n8、设等比数列:1,3,9,27,…。
求使得此数列的前n项之和大于2345678的最小的自然数n。
答案:14s=0n=0do while s<=2345678s=s+3^nn=n+1enddo?n9、求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。
答案:7n=0s=45678for i=3 to 22839 step 2if mod(s,i)=0n=n+1endifendfor?n10、求出203267的所有真因子(即小于它本身的约数)中最大的因子数。
答案:6557s=203267for i=1 to int(203267/3)if mod(s,i)=0n=iendifendfor?n11、求出20677和42067的最大公约数。
答案:713for i=20677 to 1 step -1if mod(20677,i)=0 and mod(42067,i)=0exitendifendfor?i12、求前[1,100]内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)。
答案:162s=0for i=1 to 100if mod(i,6)=0 or mod(i,8)=0s=s+sqrt(i)endifendfor?round(s,0)13、求所有符合算式ab*ba=2701的最小的两位数ab(即a*10+b)。
其中a、b是1~9之间的一位整数。
答案:37for a=1 to 9for b=1 to 9if (a*10+b)*(b*10+a)=2701?a*10+breturnendifendforendfor14、已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。
试求出此数列中大于5000的最小的项。
答案:5051a=1n=1do while a<5000a=a+nn=n+1enddo?a15、已知数列{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。
答案:20Dimension f(100)f(1)=1f(2)=4n=2do while f(n)< 87654321n=n+1f(n)=3*f(n-1)-f(n-2)enddo?n16、一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最大的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程不超过690米。
答案:15h=100s=100n=1do while s<690h=h*3/4s=s+2*hn=n+1enddo?n-117、设有用26个字母表示的26个表达式:a=1,b=1/(a+1),c=1/(b+2),…,z=1/(y+25)。
试求出这26个字母中其值小于0.1的字母个数。
答案:16a=1n=0for i=1 to 25a=1/(a+i)if a<0.1n=n+1endifendfor?n18、回文指的是正读和反读都一样的一串字符,如121、1221。
试求出[1421,4112]内所有回文数的和。
答案:74250s=0for i=1421 to 4112if int(i/1000)=i%10 and int(i/100)%10= int(i%100/10)s=s+iendifendfor?s19、求在[100,999]内所有不含数字0且各位数字之积被96整除的数之和。
答案:26640s=0for a=1 to 9for b=1 to 9for c=1 to 9if(mod(a*b*c,96)=0)s=s+a*100+b*10+cendiendfendfendf?s20、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。
答案:20610a=1001s=0do while n<20if mod(a,4)=0 or mod(a,6)=0s=s+an=n+1endifa=a+1enddo?s21、若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。
如5和76都是自同构数,因为它们的平方分别是25和5776。
求[2,99999]内所有自同构数之和。
(提示:若x是m位同构数,则x的平方除以10的m次方的余数就是x)答案:101114s=0for i=2 to 999999if 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)=is=s+iendifendfor?s22、求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较小的一个数。
(提示:设A<=B,当A越大时A+B越小)答案:57s1=54322for i=1 to int(sqrt(54321))if(54321%i==0 )s=i+54321/iif(s<=s1)s1=sa=iendifendifendfor?a23、已知数列:1、2、4、7、10、15、…,其特点是:相邻两项之差恰好构成自然数列:1、2、3、4、5、…。
求此数列的前100项中能被4整除的项的个数。
答案:25m=0a=1for n=1 to 99a=a+nif a%4==0endifendfor?m24、求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。
(提示:模拟人工计算的“2除取余”法)答案:13c=98765432n=0do while c>0if(c%2==1)n=n+1endifc=int(c/2)enddo?n25、对自然数A、B、C,若A<B<C且A*A+B*B=C*C,则称{A,B,C}为一组勾股弦数,其中A、B、C分别称为勾、股、弦。
试求出弦为25000的勾股弦数组的个数。
答案:5n=0for b=12500 to 25000for a=1 to b-1if a*a+b*b=25000*25000n=n+1endifendforendfor?n26、求方程3x-7y=1在条件|x|<100且|y|<40下的整数解的个数。
答案:26n=0for x=-99 to 99for y=-39 to 39if 3*x-7*y==1n=n+1endifendforendfor?n27、已知数列{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。
答案:19dime f(100)f(1)=1s=5for n=3 to 100f(n)=3*f(n-1)-f(n-2)s=s+f(n)if s>75364321exitendifendfor?n28、求100-200内的所有素数的个数。
(素质是指只能被1和本身整除的数)答案:21n=0for i=100 to 200for j=2 to i-1if(i%j==0)exitendifendforif j==in=n+1endifendfor?n29、求1000-10000内的第50个素数。
(素质是指只能被1和本身整除的数)答案:1361n=0for i=1000 to 10000for j=2 to i-1if(i%j==0)exitendifendforif j==in=n+1endifif n==50exitendifendfor?i30、编写程序,计算10000以内有多少个这样的数,其个位数为6且该数能被9整除。