如何在GW-BASIC中无需IF语句实现行星重量计算的变量匹配?
在GW-BASIC里不用IF语句匹配行星重量系数的方法
有两种可行方案,其中利用EVAL函数的方法最直接,完全不需要IF语句:
方案一:用EVAL实现间接变量引用
GW-BASIC的EVAL函数可以把字符串当作变量名解析,直接获取对应变量的系数值,代码修改如下:
10 LET jupiter=2.54:LET mercury=0.38 20 INPUT weight 30 INPUT "planet to determine weight on"; planet 40 ON ERROR GOTO 70 ' 捕获未知行星的错误 50 LET weight2 = EVAL(planet) * weight 60 GOTO 80 70 LET weight2 = 0 ' 未知行星时返回0 80 PRINT "your weight on"; planet; "is"; weight2
- 原理:当用户输入
jupiter时,EVAL("jupiter")会直接返回变量jupiter的值2.54,省去了逐个判断的IF分支。 - 加入错误处理是为了防止用户输入不存在的行星导致程序崩溃,此时体重会设为0。
方案二:数组配对存储(扩展更方便)
如果后续要添加更多行星,用数组存储行星名和对应系数会更易维护,虽然循环里用到了一次IF,但比多层ELSE IF简洁很多:
10 DIM planets$(2), factors(2) 20 planets$(1)="jupiter":factors(1)=2.54 30 planets$(2)="mercury":factors(2)=0.38 40 INPUT weight 50 INPUT "planet to determine weight on"; planet 60 LET weight2=0 70 FOR i=1 TO 2 80 IF planets$(i)=planet THEN LET weight2=factors(i)*weight:EXIT FOR 90 NEXT i 100 PRINT "your weight on"; planet; "is"; weight2
内容的提问来源于stack exchange,提问作者Sam H
相关产品推荐
相关产品推荐

