古詩詞大全網 - 成語解釋 - QBASIC中的標準函數

QBASIC中的標準函數

QBASIC提供了標準函數。壹個標準函數就是壹段程序,它具有壹種特定的功能。 我們在使用時只需寫出它的名字(即函數名)和參數就可以直接調用。 QBASIC提供的標準函數包括:算術函數和字符串函數等。這些函數功能齊全、 用途廣泛。這裏主要介紹算術函數,有關字符串函數將以後章節中介紹。算術函數, 指調用函數後返回壹個數值,本節主要介紹取整函數與隨機函數。

取整函數

隨機函數

1. 取整函數

函數格式:INT(X)

功能:產生壹個不大於X的最大整數。其中,X可以是常數、變量或表達式。

使用取整函數可以解決很多數學問題。

(1)取壹個數的整數部分

例如:

X=5.3: Y=5.5: Z=-6.1

X=INT(X): Y=INT(Y): Z=INT(Z)

PRINT X,Y,Z

END

執行後屏幕上顯示: 5 5 -7

(2)四舍五入

取整函數本身沒有四舍五入的功能,但將其稍加變化就可以實現四舍五入。

四舍五入的通式為:

INT(X+0.5)。

例1 將下面的數字保留整數部分,小數部分四舍五入。

1.36 2.5 4.1 0.48

FOR I=1 TO 4

READ X

PRINT X,

INT(X+0.5)

NEXT I

DATA 1.36,2.5,4.1,0.48

END

執行後屏幕上顯示:

1.36 1 2.5 3 4.1 4 0.48 0

(3)保留N位小數

將X保留N位小數,可以先將X乘以10N,取整後再除以10N。

通式為INT(X*10^N)/ 10^N。

例2 將3.14159保留三位小數且最後壹位小數四舍五入。

X=3.14159

Y=INT(X*1000+0.5)/1000

PRINT X,Y

END

執行後屏幕上顯示:

3.14159 3.142

(4)判斷整除

要判斷壹個整數X能否被另外壹個整數Y整除,只需判斷X/Y=INT(X/Y),條件滿足則為整除。

例如:

CLS

INPUT X,Y

IF X/Y=INT(X/Y) THEN PRINT "能整除"ELSE PRINT "不能整除";

END

執行後屏幕上顯示:

30, 5 能整除

30, 7 不能整除

如果將除數改為2,則可以判斷壹個數的奇偶性。

(5)分離數字

要對壹個三位數X分離數字,可以采用如下方法:

百位數字B=INT(X/100)

十位數字S=INT((X-B*100)/10)

個位數字G=X-B*100-S*10

例3 求100~999之間的所有水仙花數,並統計個數。水仙花數是指壹個三位數,其中各位數字的立方和就等於該數本身。

REM 求水仙花數

N=0

FOR X=100 TO 999

B=INT(X/100)

S=INT((X-B*100)/10)

G=X-B*100-S*10

IF X=B*B*B+S*S*S+G*G*G THEN N=N+1: PRINT X,

NEXT X

PRINT "N="; N

END

執行後屏幕上顯示: 153 370 371 471 N=4

2. 隨機函數

什麽是隨機數?我們可以這樣理解:每次從若幹個可能的數中抽出壹個,抽出哪壹個,事先不能確定,這樣抽出的數叫做隨機數。

函數格式:RND(X)

功能:產生壹個0~1之間的隨機數。

其中,X可以是任意的數值,也可以忽略不寫。

在具體的程序中,無論RND(1)、RND(100)、RND(562),RND產生隨機數的效果是相同的,壹般寫成RND就可以了。

為了能產生真正的隨機數(即每次執行程序產生的數各不相同),需要在程序的

開頭加上語句RANDOMIZE TIMER。

使用隨機函數還可以產生某壹個區域中的隨機數:

A~B(不包括A和B)

(B-A)*RND+A A~B(包括A和B)

(B-A+1)*RND+A

例4 算術練習程序。

利用隨機函數產生10道不同的兩位數加法題,要求回答, 每答對壹道題加10分,最後給出總得分。

分析:先產生兩個兩位的隨機整數,並顯示在屏幕上。

輸入答案後判斷結果是否正確,如果正確則加10分。如此重復10次即可。

RANDOMIZE TIMER

CLS : S=0

FOR I=1 TO 10

A=INT(90*RND)+10

B=INT(90*RND)+10

PRINT A; "+"; B; "=";

INPUT C

IF C=A+B THEN S=S+10

NEXT I

PRINT "妳的得分是:"; S

END

使用隨機函數還可以模擬壹些自然現象,得到統計數據。

例5 模擬拋硬幣試驗。求硬幣落地以後正面向上或反面向上的次數。 分析:產生壹個隨機整數,如果這個數是奇數,則將正面向上次數加1,否則將反面向上的次數加1。如此重復N次即可。

RANDOMIZE TIMER

CLS

INPUT "N=";N

FOR I = 1 TO N

X = INT(RND * 100)

IF X / 2 = INT(X / 2) THEN A = A + 1: GOTO 5

B = B + 1

5 NEXT I

PRINT "正面次數=";A, "反面次數=";B

END

執行後屏幕上顯示: N=? 100 正面次數=49 反面次數=51 N=? 1000 正面次數=505 反面次數=495 N=? 10000 正面次數=4975 反面次數=5025 從上面的結果我們可以看到,拋硬幣的次數越多,正、反面的概率就越接近。