第4行和第6行中的变量Z即为虚读变量,其作用请读者自己理解。
[例5-18] 设某一水稻单株粒重的样本有5个观察值,以克为单位,其数为2、4、5、7、8,求其平均数、中数和极差。
算法:
平均数 资料中各个观察值的总和除以观察值个数所得的商。
AV=(X1+X2+X3+X4+X5)/5
中数 资料内所有观察值从小到大依次排列居中间位置的观察值。
MP=X3
极差 资料中最大观察值与最小观察值的差数。
SM=X5-X1
源程序:
REM EXAMPLE 18
READ X1,X2,X3,X4,X5
AV=(X1+X2+X3+X4+X5)/5
MP=X3
SM=X5-X1
PRINT "X=";
PRINT USING "#####";X1,X2,X3,X4,X5
PRINT USING "__AV=####.##";AV
PRINT USING "__MP=#####";MP
PRINT USING "__SM=#####";SM
DATA 2,4,5,7,8
END
运行结果:
X= 2 4 5 7 8
AV= 5.20
MP= 5
SM= 6
程序说明:
(1)在例5-18中,采用READ、DATA语句给X1、X2、X3、X4、X5变量赋初值;用LET语句计算AV、MP、SM;用PRINT USING语句输出。
(2)值得注意的是给输出数据添加提示符的方法及输出数据对齐的方法。添加提示符时“X=”与“AV=”、“MP=”、“SM=”,采用的方法不同:“X=”使用PRINT语句的紧凑格式;后三者使用PRINT USING语句自选格式。为使输出数据对齐,采用自选格式较方便。
思考:能否对"X="也使用后者的方法呢?若这样,将产生什么样的输出形式,请读者考虑。
(3)格式字符串中下划线为格式代码,表示以下字符作为文字字符输出,即原样打印。
END语句是程序的结束标志,每一个完整的Quick BASIC程序,在程序的最后必须有一个END语句,程序执行到END语句时便停止下来。该语句已在前面各例中用过了,此处不再重复。
STOP语句可以用来终止程序的执行。与END不同的是,STOP语句可以在程序的任何地方出现,而且可以出现多次。利用STOP语句这一功能可进行程序调试。
REM语句称为注释语句。它是一个非执行语句,该语句中的内容仅仅用作对程序进行注释或说明,以增加程序的易读性。当程序执行或编译时,这个语句中注释的内容都被跳过。当打印程序清单时,这个语句中的所有内容原样打印。
注释语句REM可以用一个单引号来代替,下面两个语句是等价的:
INPUT "R=";R:REM the radius
INPUT "R=";R 'the radius
注意:用单引号时,可省去语句间的冒号。
在Quick BASIC中允许使用符号常数,符号常数是用来代替数值或字符串值的。即用一个名字来代表一个常数。例如用P1代表圆周率3.1416;用BJ代表"BEIJING"。所以符号常的作用和普通常数的作用相同。
符号常数要用符号常数说明语句进行定义。
CONST〈符号常数名1〉=〈表达式1〉[,〈符号常数名2〉=〈表达式2〉]…
其中
〈符号常数名〉——遵守变量名的规则。也可以在名字名附加类型说明(%、&、!、#或$),用以说明它的类型。
表达式——由数值常值、字符串常数、算术运算符组成,其中不能有变量或函数。
定义符号常数代替的数值或字符串值。
(1)常数的类型由类型说明符决定,如果类型说明符省略,则常数类型由表达式决定。
例如:
CONST MIN%=10,MAX=MIN+100
其中,符号常数MIN用类型说明符%说明其为整型;符号常数MAX省略了类型说明符,但对应的表达式的值为整型数,因此其类型由表达式确定为整型。
(2)CONT语句一般放在程序的开始,因为符号常数必须先定义,而后才能引用。
(3)符号常数是一个固定数值的符号,不应当作变量用。一经定义,不能再变。重新定义或作为变量赋值都不允许的。
(4)在子程序中定义的符号常数是局部的,只在子程序中起作用;在过程外面说明的符号常数,则在整个模块起作用。
4.举例
[例5-19] 根据圆的半径计算圆面积。源程序:
REM EXAMPLE 19
CONST PI=3.1416,RS="radius:",AE="area:" '定义符号常数
INPUT "R=",R '输入半径
S=PI * R * R
PRINT RS;R,AE;S
END
运行结果:
R=5
radius:5 area:78.54
使用符号常数可使修改程序变得容易。例如且个常数要在程序中多次使用,先用符号常数定义它,以后需要改变该常数值时,只要改变CONST语句符号常数代表的数值就成了,完全没必要去改变程序中多处用到的常数值。
本章重点介绍了Quick BASIC语句中的数据的输入、数据运算和数据输出语句。这是程序中必不可少的部分。
1.LET语句可经给变量赋以常量、变量或表达式的值。在LET、INPUT、READ三种给变量赋值的语句中,只有它能进行计算,并能把结果保存下来,所以它除用作输入数据外,更多的是用于运算。当它作为输入语句使用时,由于一个常量只能给一个变量赋值,它只适用于数据不多的简单程序。
2.INPUT语句能“人机对话”方式灵活地输入数据。其缺点是执行该语句时,程序处于等待状态,而且键盘输入数据较慢,影响运行速度;重复执行程序时,必须重输入数据。所以,它多用在数据需要人工调节、输入数据较少的程序。
3.READ/DATA语句能给大批变量赋值,而且利用RESTORE语句使有些数据能够重复使用。由于数据保存在内存中,所以运行速度也快。重复执行程序时,不必重复输入数据。该语句适用于处理数据量大的程序。
4.PRINT语句的使用,重点放在输出格式上。它的输出格式有标准格式和紧凑格式两种。此外,与PRINT语句配合使用的还有输出定位函数TAB和输出空格函数SPC。使用PRINT语句的两种输出格式,并配合TAB和SPC两种函数,基本能满足一般输出格式的要求。
5.PRINT USING语句的使用,重点要放在格式字符串的设计上。为此,必须对组成格式字符串的几种主要格式代码的功能应有清楚的了解。PRINT USING语句的自选输出格式,具有很强的输出功能,能满足用户各种复杂输出格式的要求。
此外,本章还介绍了Quick BASIC扩充的符号常数说明语句CONST。
1.指出下列语句中的错误
(1)PRINT A=3*4 (2)PRINT "A=":A
(3)PRINT USING"# #",B
(4)PRINT USING"# #.#";A,"# #.# #";B#
(5)LET A=8,B=7 (6)LET C=GOOD
(7)LET X+2=Y (8)LET A,B,C=6,-1,6
(9)INPUT X;Y,Z (10)INPUT X+Y,C-D
(11)INPUT X=;X (12)INPUT X,Y,Z
(13)READ A,B,C (14)READ X;Y;Z
(15)READ "P=",P (16)READ A,B,C+D
(17)DATA 8;9; (17)DATA 3,6
2.写出下列程序运行结果
(1)A=5 (2)A$="GOOD"
B=8 B$="MORNING"
A=A+B PRINT A$;" ";
B=A+B PRINT B$
PRINT A,B END
END
(3)S=1 (4)READ A,B,C,D,E
K=0 PRINT A,B,C
READ A RESTORE
K=K+1 READ T,F,T,G
S=S*A READ T,T,H,I
READ A PRINT D,E,F,G,H,I
K=K+1 DATA 10,20,30
S=S*A DATA 40,50,60,70,80
PRINT K,S END
DATA 10,20
END
3.利用TAB函数或SPACES函数输出下列图案。

4.编制程序,要求程序运行时从键盘输入3种商品的单价、购买数量,并计算和输出所用的总金额。
5.班上集体购买课外读物,每册价格分别是2.50元3.20元和3.90元。输入每种书各买多少本,打印出共多少钱?
6.编制程序,完成摄氏温度向华氏温度的转换。(提示:设摄氏温度为ss,华氏温度为hs,则转换公式为:hs=ss*5/9+32)
7.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔有多少只?(设h=71,f=158)
8.根据说明写出程序。通过显示适当的提示,要求用户输入下列信息:姓名、性别、年龄、工作单位,然后将输入的数据按适当格式显示出来。
9.假设某储户到银行存款共计x元,试问银行出纳员应如何付款最佳?(提示:银行出纳员所付款的各种票额钞票总张数最少时就一定最简便,因而为最佳付款方案。在计算时为了