qbasic的一些例子(qb64 for win10下運行經過)

二次方程求根:函數

INPUT "INPUT a,b,c : ", A, B, C
D = B * B - 4 * A * C
P = -B / (2 * A)
Q = SQR(ABS(D)) / (2 * A)
IF D >= 0 THEN PRINT "X1="; P + Q, "X2="; P - Q ELSE PRINT "X1="; P; "+"; Q; "i", "X2="; P; "-"; Q; "i"
END

計算1!+2!+3!...+10!(函數和過程兩種方法)動畫

DECLARE SUB Fact (n!, f!)
DECLARE FUNCTION Factorial! (n!)

s = 0
FOR i = 1 TO 10
    CALL Fact(i, f)
    s = s + f
NEXT i
PRINT "1!+2!+3!...+10!="; s

s = 0
FOR i = 1 TO 10
    s = s + Factorial(i)
NEXT i
PRINT "1!+2!+3!...+10!="; s
END


SUB Fact (n, f)
    f = 1
    FOR i = 1 TO n
        f = f * i
    NEXT i
END SUB

FUNCTION Factorial (n)
    f = 1
    FOR i = 1 TO n
        f = f * i
    NEXT i
    Factorial = f
END FUNCTION

1、循環,data語句等code

CONST PI = 3.14159265
MYSTR$ = "demonstration of qb64 for win10 !"
PRINT MYSTR$

'Input 10 letters, compare sizes, output the largest one
DIM A$(10)
FOR I = 1 TO 10
    READ A$(I) 'INPUT A$(I) :  Enter 10 letters from the terminal
NEXT I
B$ = A$(1)
FOR I = 2 TO 10
    IF B$ < A$(I) THEN B$ = A$(I)
NEXT I
PRINT "The largest of the ten letters:"; B$

'Number of multiples of 3 within 500
T = 0
FOR J = 3 TO 500 STEP 3
    T = T + 1
NEXT J
PRINT "Number of multiples of 3 within 500 is:"; T

Sum = 0
I = 0
DO WHILE I <= 100
    Sum = Sum + I
    I = I + 2
LOOP
PRINT "The sum of even numbers within 100 is: "; Sum

REM sum=1+2+3...+100
Sum = 0
a = 1
WHILE a <= 100
    Sum = Sum + a
    a = a + 1
WEND
PRINT "sum="; Sum

REM calculate the product value of 2000(-1992=8); growth rate is 9%
READ V1992, N, R
' PRINT "INPUT value of growth rate: "
' INPUT R
LET VALUE = V1992 * (1 + R) ^ N
PRINT "the product value of 2000 is: "; VALUE

REM Radar Calculates Aircraft Heigh
'S=1/2*V*T,H=sin(a*3.14159265/180)*S
LET S = 0.5 * (3 * 10 ^ 8) * (1 / 3000)
LET H = SIN(36 * PI / 180) * S
PRINT "the  Aircraft Heigh is: "; H

'Read from a text file and output it
OPEN "D:\prg\myqb\aaa.txt" FOR INPUT AS #1
DO WHILE NOT EOF(1)
    LINE INPUT #1, a$
    PRINT a$
LOOP
CLOSE #1

PRINT "BY wangxuwei 2019"
END

DATA a,b,A,Z,t,w,p,K,k,P
DATA 100,8,0.09

2、函數ip

DECLARE SUB Fact (n!, f!)
DECLARE FUNCTION gcd! (m!, n!)
DECLARE FUNCTION lcm! (m!, n!)
DECLARE FUNCTION mymax! (x!, y!)
c = 29
PRINT "hello", c
PRINT "hello"; c * 6

DIM a AS STRING * 5
a = "China"
a$ = "Shanghai"
PRINT a, a$

READ a1, b1, c1
DATA 75,60,90
V = (a1 + b1 + c1) / 3
PRINT "average="; V

INPUT "a1,b1,c1="; a1, b1, c1
V = (a1 + b1 + c1) / 3
PRINT "average="; V

s = 0
FOR i = 1 TO 100
    s = s + i
NEXT i
PRINT "1+2+3+...+100="; s

PRINT "Fibonacci sequence"
f1 = 1
f2 = 1
PRINT f1, f2,
FOR i% = 3 TO 20
    f3 = f1 + f2
    PRINT f3,
    f1 = f2
    f2 = f3
NEXT
PRINT


FOR i = 4 TO 7
    CALL Fact(i, f)
    s = s + f
NEXT i
PRINT "4!+5!+6!+7!="; s

PRINT "Greatest common divisor of 120 and 96 is:"; gcd(120, 96)
PRINT "least common multiple of 120 and 96 is:"; lcm(120, 96)
PRINT "max of 120,200 ,396 is:"; mymax(mymax(120, 396), 200)

END

SUB Fact (n, f)
    f = 1
    FOR i = 1 TO n
        f = f * i
    NEXT i
END SUB

FUNCTION gcd (m, n)
    IF m < n THEN SWAP m, n
    r = m MOD n
    DO WHILE r <> 0
        m = n
        n = r
        r = m MOD n
    LOOP
    gcd = n
END FUNCTION

FUNCTION lcm (m, n)
    lcm = m * n / gcd(m, n)
END FUNCTION

FUNCTION mymax (x, y)
    IF x > y THEN
        mymax = x
    ELSE
        mymax = y
    END IF
END FUNCTION

3、動畫(小球移動)帶聲音ci

'     Animation, moving balls, and music
declare sub gameCircle
DIM gcircle%(300)
SCREEN 1
WINDOW (-10, -10)-(310, 190)
COLOR 10, 1
CALL gameCircle
GET (1, 1)-(26, 26), gcircle%()
CLS
FOR nowx = 15 TO 280 STEP 5
    FOR nowy = 15 TO 170 STEP 5
        PUT (nowx, nowy), gcircle%(), PSET
        SOUND 50, 1
        SLEEP (1)
        PUT (nowx, nowy), gcircle%(), XOR
    NEXT nowy
NEXT nowx
SUB gameCircle
    CIRCLE (15, 15), 10
    PAINT (15, 15)
END SUB

漢諾塔:terminal

DECLARE SUB delay (tt AS SINGLE)
DECLARE SUB drawtower ()
DECLARE SUB hanoi (n AS INTEGER, a AS INTEGER, b AS INTEGER, c AS INTEGER)
DECLARE SUB move (a AS INTEGER, c AS INTEGER)
DECLARE SUB drwatower
DIM SHARED n AS INTEGER
DIM SHARED ts AS SINGLE
CLS
DO WHILE n < 1 OR n > 10
    INPUT "Please input tower levels(1-10):", n
LOOP
DIM SHARED t(3, n) AS INTEGER
ts = 1 / n / n
IF ts > .5 THEN ts = .5
'set plates to No.1 tower
FOR i = 1 TO n
    t(1, i) = i
NEXT i
CALL drawtower
CALL delay(1)
CALL hanoi(n, 1, 2, 3)
PRINT
PRINT
PRINT "Press any key to return."
PRINT "                by CXX"
SLEEP
END
SUB delay (tt AS SINGLE)
    ss = TIMER
    IF tt > 0.05 THEN
        DO UNTIL TIMER - ss > tt
        LOOP
    ELSE
        FOR i = 1 TO 200000 / tt
            j = j + 1
            j = j - 1
        NEXT i
    END IF
END SUB
SUB drawtower
    CLS
    PRINT
    PRINT
    FOR i = 0 TO n
        FOR j = 1 TO 3
            PRINT SPC(n - t(j, i));
            IF t(j, i) > 0 THEN
                PRINT CHR$(218);
                PRINT STRING$(t(j, i) - 1, CHR$(196));
            END IF
            IF i = 0 THEN
                IF t(j, i) > 0 THEN
                    PRINT CHR$(196);
                ELSE
                    PRINT " ";
                END IF
            ELSE
                IF t(j, i) > 0 THEN
                    PRINT CHR$(197);
                ELSE
                    PRINT CHR$(179);
                END IF
            END IF
            IF t(j, i) > 0 THEN
                PRINT STRING$(t(j, i) - 1, CHR$(196));
                PRINT CHR$(191);
            END IF
            PRINT SPC(n - t(j, i));
            PRINT " ";
        NEXT j
        PRINT
    NEXT i
END SUB
SUB hanoi (n AS INTEGER, a AS INTEGER, b AS INTEGER, c AS INTEGER)
    'move n plates from a to c via b
    IF n > 1 THEN
        CALL hanoi(n - 1, a, c, b)
        CALL move(a, c)
        CALL hanoi(n - 1, b, a, c)
    ELSE
        CALL move(a, c)
    END IF
END SUB
SUB move (a AS INTEGER, c AS INTEGER)
    'search the plate to move
    ks = 0
    bh = 0
    js = 0
    FOR i = 1 TO n
        IF t(a, i) > 0 THEN
            ks = i
            bh = t(a, i)
            'move top plate on a to new position on c
            FOR j = n TO 1 STEP -1
                IF t(c, j) = 0 THEN
                    js = j
                    EXIT FOR
                END IF
            NEXT j
            EXIT FOR
        END IF
    NEXT i
    'animating
    'plate going up on a
    FOR i = ks TO 1 STEP -1
        t(a, i - 1) = t(a, i)
        t(a, i) = 0
        CALL drawtower
        CALL delay(ts)
    NEXT i
    'plate horizon moving
    pz$ = ""
    FOR i = 1 TO 2 * n + 1
        pz$ = pz$ + CHR$(SCREEN(3, (a - 1) * (2 * n + 2) + i))
    NEXT i
    IF c > a THEN
        FOR i = (2 * n + 2) * (a - 1) + 1 TO (2 * n + 2) * (c - 1)
            LOCATE 3, i
            PRINT SPC(n * 2 + 1);
            LOCATE 3, i + 1
            PRINT pz$;
            CALL delay(ts)
        NEXT i
    ELSE
        FOR i = (2 * n + 2) * (a - 1) + 1 TO (2 * n + 2) * (c - 1) + 2 STEP -1
            LOCATE 3, i
            PRINT SPC(n * 2 + 1);
            LOCATE 3, i - 1
            PRINT pz$;
            CALL delay(ts)
        NEXT i
    END IF
    t(a, 0) = 0
    'plating going down on c
    t(c, 0) = bh
    FOR i = 0 TO js - 1
        t(c, i + 1) = t(c, i)
        t(c, i) = 0
        CALL drawtower
        CALL delay(ts)
    NEXT i
END SUB
相關文章
相關標籤/搜索