
| 出版日期:2003-01-27 总期号:504 本年期号:04 |
|
等级考试试题分析
二级QB程序设计(下) 《中国电脑教育报》杭大庆 四、编制程序PROG4.BAS其功能是: 模拟掷两个骰子1000次,统计出各点出现的次数并把统计出来的11个数存入prog.dat文件中。所谓骰子是一个正立方体 (正六面体) ,每面分别标有 1,2,3,4,5,6 点,掷一个骰子,总有一面向上,其上的点数即是掷此骰子得的点数。如掷二个骰子一次,可能一个是3一个是5,则此次掷的点数为8。 程序有【1】、【2】、【3】及【4】四处需要补充完整。请将程序调试出所需结果。 RANDOMIZE TIMER DIM n(12) FOR j = 1 TO 1000 a = INT(RND * 6) + 1 b = INT(RND * 6) + 1 p = a + b n(p) = 【1】 NEXT j PRINT "The point", "Times" FOR j = 2 TO 12 PRINT TAB(5); j; TAB(15); n(j) NEXT j OPEN "prog.dat" 【2】 as #1 FOR j = 2 TO 12 PRINT #1,【3】 NEXT j 【4】 END 解析:本程序中,a,b各为随机产生的点数,并把a,b相加赋值给p用数组n统计各点出现的次数,故每次循环中,np自增1,因此,第一处语句应为np = np + 1; 第二处是要指定向文件写数据,故要用FOR OUTPUT此行完整的语句为OPEN ″prog.dat″ FOR OUTPUT AS #1; 第三处是把统计出的各点的次数写到文件中,而各点数出现的次数存放在数组n中,所以,此处的完整语句应为PRINT #1 nj; 第四处,在程序结束前,要关闭打开过的文件,故此处为CLOSE #1。 答案: 【1】处应为 n(p) + 1; 【2】处应为 FOR OUTPUT; 【3】处应为 n(j); 【4】处应为CLOSE #1。 五、编制程序PROG3.BAS。其功能是: 有一数列,前二个数均为1,第三个数开始,a(n)=a(n-1)+3*a(n-2),要求输出前20个数。请根据程序的需要在【1】、【2】、【3】及【4】四处填上所需的内容,将程序补充完整。 n1 = 1: n2 = 1: t = 0 DO PRINT n1, n2 n1 = 3*n1 + 【1】 n2 = 3*n2 + 【2】 t = 【3】+2 LOOP UNTIL t 〉= 【4】 END 解析:执行第一次循环时,打印变量n1,2,实际上就是打印数列的第一个与第二个数。然后,把数列中的第三位数赋值给n1,根据公式,应为n1=3n1+n2,执行此语句后,n1存放的已经是第三位数。所以,当把第四位数赋值给n2时,就应为n2=3×n2+n1。 在循环体中,由变量t来统计已打印的数列数。而每次循环打印两个数,故第三处应为t=t+2。当t大于或等于20时,循环结束。故第四处的语句应为LOOP UNTIL t >= 20。 答案: 【1】处应为n2; 【2】处应为n1; 【3】处应为t; 【4】处应为20。 六、编制程序PROG6.BAS其功能是: 打印出杨辉三角形。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 请在【1】、【2】、【3】及【4】四处将程序补充完整。 INPUT "N="; n 【1】 a(n, n) FOR j = 1 TO n a(j, j) = 【2】 a(j, 1) = 【3】 FOR k = 2 TO j - 1 a(j, k) = 【4】 + a(j - 1, k) next k NEXT j FOR j = 1 TO n FOR k = 1 TO j PRINT TAB(5 * k); a(j, k); NEXT k NEXT j END 解析:第一处是定义一个n行n列的二维数组,故用DIM语句,此处的完整语句为DIM an n; 第二处,根据图形,行与列相等处为1,因此,要把行列相等的元素赋值为1,此处完整语句为aj j=1; 第三处,根据图形,第一列全部为1,因此要把第一列的元素赋值为1,此处完整语句为aj1=1; 第四处,通过图形可看出,数组中的其他元素值等于它的正上方的元素与这个元素左边的元素的和。ajk=【4】+aj-1k此句已经给出它的正上方的元素为aj-1k,故另一个数为aj-1k-1。此处的完整语句为:ajk=aj-1k-1+aj-1k 答案: 【1】处应为 DIM a(n, n); 【2】处应为 1; 【3】处应为 1; 【4】处应为 a(j - 1, k - 1)。 |
|||||||||||||||||||||||