实验4 程序设计详细解析例题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 程序设计参考答案
二、顺序结构程序设计
(1)物体长度可以用公制或者英制单位表示,已知公制长度单位为毫米(mm),
英制单位长度为英寸(inch),其转换公式为1 inch = 25.4 mm,编写程序将输入的英制长度转换为公制后输出。
CLEAR
SET TALK OFF
INPUT "请输入英寸:" TO inch
mm = 25.4 * inch
? "长度是(mm)", mm
SET TALK ON
RETURN
说明:
1.用“?”将计算结果输出时,各项之间用逗号分隔,字符型数据与数值型数据输出间隔较大,如果需要将各种数据连续显示,则需要将其转换
为字符型数据输出。
2.注意INPUT 和ACCEPT 输入时的区别。
? "长度是(mm)" + ALLTRIM( STR( mm, 15, 3 ) )
(2)从键盘输入圆锥体的半径(r)和高度(h),计算其体积并输出,体积计算公式
为v = π * r * r * h / 3。
CLEAR
SET TALK OFF
INPUT "请输入圆锥体的半径:" TO r
INPUT "请输入圆锥体的高度:" TO h
v = PI( ) * r * r * h / 3
? "圆锥体的体积是:", v
SET TALK ON
RETURN
(3)求方程ax2 + bx + c = 0的根,a, b, c的值从键盘输入(假设输入的a, b, c值
满足b2– 4ac ≥ 0,不考虑虚根的情况)。
CLEAR
SET TALK OFF
INPUT "a=" TO a
INPUT "b=" TO b
INPUT "c=" TO c
r1 = ( -b + SQRT( b * b - 4 * a * c ) ) / ( 2 * a )
r2 = ( -b - SQRT( b * b - 4 * a * c ) ) / ( 2 * a )
? "该方程的第一个根是:", r1
?? "该方程的第二个根是:", r2
?
SET TALK ON
RETURN
(4)由键盘输入学生名,将“student表”中该学生的奖学金增加100元,并显
示该学生修改后的奖学金。
CLEAR
SET TALK OFF
CLOSE ALL
USE student
ACCEPT "请输入学生名:" TO stuname
LOCATE FOR 姓名= stuname
REPLACE 奖学金WITH 奖学金+ 100 && 假设查找成功
DISPLAY
SET TALK ON
RETURN
(5)分析下面程序的输出结果。
USE student
INDEX ON 姓名TAG nameidx
ACCEPT "请输入要查找的学生姓名" TO 姓名
SEEK M -> 姓名
DISPLAY
解答:
因为内存变量与字段变量同名时,单独出现这个重名时字段变量级别高于内存变量,因此需要用“M ->”限定所使用的内存变量。
三、选择结构程序设计
(1)输入3个不同的数,将它们按照数值降序从大到小输出。
方法一:区分3个不同数的各种情况,用嵌套的IF语句实现
CLEAR
SET TALK OFF
INPUT "a=" TO a
INPUT "b=" TO b
INPUT "c=" TO c
IF a > b
IF b > c
? "数据从大到小依次是:", a, b, c
ELSE
IF a > c
? "数据从大到小依次是:", a, c, b
ELSE
? "数据从大到小依次是:", c, a, b
ENDIF
ENDIF
ELSE
IF b < c
? "数据从大到小依次是:", c, b, a
ELSE
IF a > c
? "数据从大到小依次是:", b, a, c
ELSE
? "数据从大到小依次是:", b, c, a
ENDIF
ENDIF
ENDIF
SET TALK ON
RETURN
方法二:用数据交换方式实现
CLEAR
SET TALK OFF
INPUT "a=" TO a
INPUT "b=" TO b
INPUT "c=" TO c
IF a < b && 如果a < b,则交换两者存储的数据
temp = a
a = b
b = temp
ENDIF
IF b < c
temp = b
b = c
c = temp
ENDIF
IF a < b && 必须要再比较一次a和b的大小
temp = a
a = b
b = temp
ENDIF
? "数据从大到小依次是:", a, b, c
SET TALK ON
RETURN
总结:
方法一比较单调,容易出错,扩充性能也比较差;
方法二用的技巧多一些。
(2)从键盘输入数字月份,然后输出该月份的英文名称的缩写,如1月输出
“Jan”、10月输出“Oct”等等。
方法一:用多路分支语句实现
CLEAR
SET TALK OFF
INPUT "请输入月份数:" TO m
DO CASE
CASE m == 1