2010-09-16 24 views
14

我QBASIC有一個IF語句...是... ... QBASIC這裏是一個老同學的IF語句給你,但是有一個問題

我一直教別人編程(我決定這個將是很好,很容易看到 語法是如何工作的)。

...無論如何,我有這樣的代碼:

CLS 

start: 
INPUT ">>", a$ 

PRINT a$ 
IF (INSTR(a$, "do you")) THEN 
    IF (INSTR(a$, "like")) THEN 
     IF (INSTR(a$, "cheese")) THEN PRINT "Yep, I like cheese": 
     IF (INSTR(a$, "music")) THEN PRINT "Depends, which genre?": GOTO musicGenre 
    ELSE IF (INSTR(a$, "hate")) THEN 
      IF (INSTR(a$, "cheese")) THEN PRINT "No, I like cheese" 
     END IF 
    END IF 
END IF 


musicGenre: 
INPUT ">>", m$ 
SELECT CASE (m$) 
    CASE "pop" 
     PRINT "..pop! lol, baa baa" 
    CASE "rock" 
     PRINT "Rock is ok" 
END SELECT 
GOTO start 

但是當我鍵入「do you like cheese?」它似乎只回答「Yep, I like cheese」隔時間...

任何人都可以提供一些線索點亮這個?

注:
do you like music?」 的作品時間...

注2:
截圖輸出:
alt text

+7

+1我愛QBASIC:d – halfdan 2010-09-16 12:59:45

+2

什麼是你看到的不正確的輸出,當你輸入「你喜歡的奶酪?」它不會說「是的,我喜歡奶酪」? – Steven 2010-09-16 13:01:34

+1

當它沒有按預期說「是的,我喜歡起司」時,它說了什麼?什麼,或什麼都沒有? – Meff 2010-09-16 13:02:28

回答

4

您提供您的代碼看起來正確的。

請嘗試以下之一:

  • 如果可能的話,請給我們一個更大的代碼示例。我猜這個錯誤在你提供的代碼之外。
  • 在第一個IF之前輸出輸入(a$)以確認您的代碼將與預期輸入一起工作。
  • 在大多數語言中,FALSE爲零,true爲其他。但是,您可能想要更明確地使用以下IF (INSTR(a$) > 0)

編輯:你應該把goto start任何奶酪結果。否則,它會去musicGenre的代碼。

+1

嘿,非常歡呼。一個$輸出爲「'你喜歡奶酪嗎?」**然而**,它甚至不會輸出a $之後..喜歡..第一次輸出是正確的,然後第二次是空的(包括輸出的a $),那麼第三次是正確的。 – 2010-09-16 13:21:10

+1

並且我已將其餘的代碼添加到問題 – 2010-09-16 13:21:59

+1

請參閱我的答案編輯! – Steven 2010-09-16 13:25:38

1
CLS 

start: 
    INPUT ">>", a$ 

    IF (INSTR(1, a$, "do you")) THEN 
     IF (INSTR(1, a$, "like")) THEN 
      IF (INSTR(1, a$, "cheese")) THEN PRINT "Yep, I like cheese" 
      IF (INSTR(1, a$, "music")) THEN PRINT "Depends, which genre?": GOSUB musicGenre 
     END IF 
    IF (INSTR(1, a$, "hate")) THEN 
     IF (INSTR(1, a$, "cheese")) THEN PRINT "No, I like cheese" 
    END IF 
END IF 

GOTO start 
musicGenre: 
    INPUT ">>", m$ 
    SELECT CASE (m$) 
     CASE "pop" 
      PRINT "..pop! lol, baa baa" 
     CASE "rock" 
      PRINT "Rock is ok" 
    END SELECT 
RETURN 
+2

沒有任何解釋的代碼在這裏不是一個可以接受的答案。請[編輯]提供一些關於**代碼如何解決問題的信息。謝謝。 – 2013-07-06 22:39:57

0

該程序演示解析輸入和gosubs在基本。

REM Cheese progran source: 
CLS 
DO 
    INPUT ">>", a$ 
    a$ = LCASE$(a$) 
    PRINT a$ 
    IF INSTR(a$, "do you") THEN 
     IF INSTR(a$, "like") THEN 
      IF INSTR(a$, "cheese") THEN 
       PRINT "Yep, I like cheese": 
      END IF 
      IF INSTR(a$, "music") THEN 
       PRINT "Depends, which genre?" 
       GOSUB MusicGenre 
      END IF 
     ELSE 
      IF INSTR(a$, "hate") THEN 
       IF INSTR(a$, "cheese") THEN 
        PRINT "No, I like cheese" 
       END IF 
      END IF 
     END IF 
    END IF 
LOOP 
END 
MusicGenre: 
INPUT ">>>", m$ 
a$ = LCASE$(a$) 
SELECT CASE (m$) 
    CASE "pop" 
     PRINT "..pop! lol, baa baa" 
    CASE "rock" 
     PRINT "Rock is ok" 
END SELECT 
RETURN