Here is the same program, but with out useing GOTO, this code was written by some one else, and also posted on QB64.net.
REM
DEFINT A-Z
SCREEN 12
Done = 0
DO
LOCATE 2, 10
PRINT "WELCOME to Garrys invention"
COLOR 2: PRINT "You Can do these things "
PRINT "1)Multiply"
PRINT "2)ADD"
PRINT "3)Quit"
Valid% = 0
WHILE Valid% = 0
Choice$ = INPUT$(1)
Choice% = ASC(LTRIM$(Choice$))
PRINT Choice$, Choice%
SELECT CASE Choice%
CASE 49 TO 51
Valid% = 1
CASE ELSE
Valid% = 0
END SELECT
WEND
CLS
SELECT CASE Choice%
CASE 49 'multiply
RANDOMIZE TIMER
Num1% = INT(RND * 9) + 1
Num2% = INT(RND * 9) + 1
LOCATE 10, 2
PRINT "The product of"; Num1%; " x "; Num2%; "= "
INPUT Answer$
Answer% = VAL(LTRIM$(Answer$))
IF Answer% = Num1% * Num2% THEN
PRINT "Correct "; Num1%; " x "; Num2%; " = "; Answer%
SOUND 1000, 1
ELSE
PRINT "Wrong ";
SOUND 600, 3
Answer% = Num1% * Num2%
PRINT Num1%; " x "; Num2%; " = "; Answer%
END IF
PRINT Answer$
CASE 50 'addition
RANDOMIZE TIMER
Num1% = INT(RND * 9) + 1
Num2% = INT(RND * 9) + 1
LOCATE 10, 2
PRINT "The sum of"; Num1%; " + "; Num2%; "= "
INPUT Answer$
Answer% = VAL(LTRIM$(Answer$))
IF Answer% = Num1% + Num2% THEN
PRINT "Correct "; Num1%; " + "; Num2%; " = "; Answer%
SOUND 1000, 1
ELSE
PRINT "Wrong ";
SOUND 600, 3
Answer% = Num1% + Num2%
PRINT Num1%; " + "; Num2%; " = "; Answer%
END IF
CASE 51 'quit
Done = 1
END SELECT
_DELAY 1
CLS
LOOP WHILE Done = 0
SLEEP
SYSTEM