为 qbasic 类做一个项目,我需要第一行来请求输入,即" 输入预计耗尽率:",完成后它将在其下运行一个循环,其中我需要它在同一第一行上打印另一个输入语句," 输入另一个预计耗尽率或 0 退出:" 我遇到的问题是,如果我使用 LOCATE 它将直接打印循环的下一个结果在该语句下,当 id 喜欢它在列表中的最后一个结果下方打印时,在最小的未使用空间,并且它不会清除旧文本的第一行。我知道部分原因是由于循环而重复定位,但我真的卡住了。对不起,格式我是新:)
CLS
DIM percent AS DOUBLE
DIM ozLevel AS DOUBLE
DIM counter AS INTEGER
DIM change AS DOUBLE
INPUT "enter a projected depletion rate, or 0 to quit: ", percent
PRINT
PRINT TAB(2); "Loss"; TAB(17); "Final Ozone"
PRINT TAB(2); "Rate"; TAB(10); "Years"; TAB(17); "Concentration"
change = (percent / 100)
DO WHILE percent <> 0
counter = 0
ozLevel = 450
DO UNTIL ozLevel < 200
counter = counter + 1
ozLevel = ozLevel - (ozLevel * change)
LOOP
PRINT USING "##.##%"; TAB(2); percent;
PRINT TAB(10); counter;
PRINT USING "###.##"; TAB(17); ozLevel;
LOCATE 1, 1
INPUT "enter new projection: ", percent
change = (percent / 100)
LOOP
LOCATE 1, 35
PRINT "DONE"
END
QBasic具有CRSLIN
函数,可以告诉您光标的位置。
-
确保打印第三个结果执行回车和换行。只需删除;
-
现在将索引存储在合适的变量(如TableRow(中的下一个可用行中。
-
像以前一样在屏幕的第一行输入。
在 每次后续输入之后使用此变量将光标定位在下一个可用行上。
...
PRINT USING "###.##"; TAB(17); ozLevel
tablerow = CRSLIN
LOCATE 1, 1
INPUT "enter new projection: ", percent
change = (percent / 100)
LOCATE tablerow, 1
LOOP
...