2016-09-28 44 views
3

我使用以下代码块来测试gw-basic程序中的一些条件。嵌套的IF ... THEN ... ELSE在GW-BASIC

IF Average >= 80 AND Average <= 100 THEN Grade$ = "A" 
IF Average >= 70 AND Average <= 79 THEN Grade$ = "B" 
IF Average >= 60 AND Average <= 69 THEN Grade$ = "C" 
IF Average >= 50 AND Average <= 59 THEN Grade$ = "D" 
IF Average >= 40 AND Average <= 49 THEN Grade$ = "E" ELSE Grade$ = "F" 
PRINT "Average is: ", Average 
PRINT "Grade is: ", Grade$ 

它总是打印Grade is: F什么是平均值。

这个gw-basic程序中的错误是什么?

回答

4
IF Average >= 40 AND Average <= 49 THEN Grade$ = "E" ELSE Grade$ = "F" 

因为这IF THEN ELSE行将值总是分配给级$(不管的平均内容),所有以前IF THEN的做不太重要。

然而,解决方案是非常非常简单。不要使用ELSE子句并给年级$默认值“F”开头。这样,只有所有这些条件评估为false,程序才会返回“Grade is:F”。

Grade$ = "F" 
IF Average >= 80 AND Average <= 100 THEN Grade$ = "A" 
IF Average >= 70 AND Average <= 79 THEN Grade$ = "B" 
IF Average >= 60 AND Average <= 69 THEN Grade$ = "C" 
IF Average >= 50 AND Average <= 59 THEN Grade$ = "D" 
IF Average >= 40 AND Average <= 49 THEN Grade$ = "E" 
PRINT "Average is: ", Average 
PRINT "Grade is: ", Grade$ 
0

假设打印平均线是行号70,所以在除ELSE行之外的每行之后都写入GOTO 70.试试看是否有效。