计算机等级考试释疑:QBASIC攻关三大注意点

IT商界

  全国计算机等级考试二级考核计算机基础知识和使用一种高级计算机语言(QBASIC、C、Fortran、FoxBase、Visual Basic、Visual FoxPro任选其一)编写程序以及上机调试的基本技能;考试采用笔纸考试和上机操作考试相结合的形式,笔纸考试的时间为120分钟,上机操作考试时间为60分钟。这其中QBASIC是最容易入门同时也是应考人数最多的计算机语言,它的语言比较接近生活语言,并和数学语言相通,因而最容易入门,是初学者特别是广大学生朋友的首选。今天我们就一起来谈谈二级QBASIC的攻关策略。

  注意基本概念

  全面了解二级QBASIC的考试要求,吃透考试大纲,了解考试的重点和难点。在此基础上,努力熟悉考试题型,选择典型例子进行复习,以达到触类旁通的效果。对基本概念、语句函数等都要进行全面学习,不能因为平时比较少用而漏缺了对基本概念、“偏僻”函数和语句的复习。在过去的几次笔试中我们常常发现考生在数据类型、较少用到的语句和函数、DOS常用命令的较复杂应用等方面丢失大量的分数。

  2002年春季考试中有一道填空题,题目如下:

  表达式INT(1.6)=FIX(1.6)的值为。

  解析:此题考核的主要知识点是标准函数的作用和逻辑表达式。在QBASIC语言中,INT函数的功能是取不大于自变量的最小整数,FIX函数的功能是截去数值型自变量的小数部分取整。因此,INT(1.6)=1,FIX(1.6)=1,表达式INT(1.6)=FIX(1.6)即为1=1,此表达式为真,而“真”在QBASIC语言中用“-1”表示,所以此表达式的值应为“-1”。

  “心算”技能的培养

  QBASIC语言是一种比较灵活的程序设计语言,它主要培养考生的程序设计能力和程序阅读能力,在笔试中程序的阅读量较大。因此,平时复习准备过程中应注意“心算”技能的训练。

  2001年秋季考试中有一道选择题,题目如下:

  有如下程序:

  x=0

  FOR k=3 TO 5

  GOSUB ab;

  s=s+x

  NEXT k

  PRINT s

  END

  ab: x=x+2

  RETURN

  运行后输出结果是:

  A) 3 B) 12 C) 6 D) 9

  解析:此题考核的主要知识点是子程序的调用,GOSUB调用子程序语句在结构化程序设计中较少提到,不少考生容易将它忽略。只有知道GOSUB ab的作用,才能正确理解此题,其过程为循环3次,调用子程序3次,每次使X增加2(三次的X的值分别是2、4、6),然后累加到S上面,所以结果S为12,答案是B。

  上机时容易出的问题

  编程序是上机操作考试的重点,如果平时学习中只是纸上谈兵,没有实际的编程经验,就很难取得满意的成绩。大家必须较熟练地掌握30到50个左右的程序例子,才可以说为上机考试作好了准备。

  上机题一般都有输出结果,而要产生输出结果,必须运行和调试程序,在运行中调试程序就是应该掌握的一项重要技能。有时候部分考生因不会打开模块化子程序的窗口,而将子程序与主程序输到同一窗口而出错。

  2002年秋季考试中有道填空题,题目如下:

  以下程序的功能是将字符串“abcde”转换为字符串“edcba”并打印出来,请将程序补充完整。

  DECLARE FUNCTION rev$(a$)

  old$="abcde"

  PRINT old$

  PRINT rev$(old$)

  END

  FUNCTION rev$(new$)

  b$=MID$(new$,1,1)

  IF b$="" THEN

  rev$=""

  ELSE

  rev$=rev$(_______)+b$

  END IF

  END FUNCTION

  解析:此题考核的主要知识点是递归算法和函数,属考试中较难的试题。主程序中调用函数rev$一次,取出实际参数的第一个字符串存入b$中,然后判断b$是否为空串,若为空串结束函数体,返回主程序;若不为空串则执行rev$=rev$(_______)+b$语句,显然此句用到了递归算法,它是把b$、返回点等压入递归调用栈内,同时取出第二个字符以后的字符串作为新的参数继续调用rev$,直至b$为空串,进行退栈。所以rev$=rev$(_______)+b$语句中的空格应该是取出new$字符串第二个字符以后的字符串,其完整格式应为:"rev$=rev$(MID$(new$,2))+b$"。

  2003年春季考试中有一道填空题,题目如下:

  编制程序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,每次循环自增1,故第一句应为n(p))= n(p))+1;第二处要向指定的文件写数据,故要用FOR OUTPUT;第三处要把各次出现的数据存放在数组中,则此处须填入n(j));最后程序结束前,要关闭打开的文件,故采用COLSE #1。