代碼見下:
OPTION BASE 1DIM buff(16000) AS LONGPRINT "calc n!"INPUT "n="; nn%rad& = 10000arrLen% = 1buff(1) = 1FOR i% = 1 TO nn% STEP 1 cc& = 0 FOR j% = 1 TO arrLen% STEP 1 tt& = buff(j%) * i% + cc& buff(j%) = tt& MOD rad& cc& = tt& \ rad& NEXT IF (cc& > 0) THEN arrLen% = arrLen% + 1 buff(arrLen%) = cc& END IFNEXTPRINT "n!="; LTRIM$(RTRIM$(STR$(buff(arrLen%))));FOR i% = arrLen% - 1 TO 1 STEP -1 s$ = LTRIM$(RTRIM$(STR$(buff(i%)))) len1% = LEN(s$) IF (len1% < 4) THEN PRINT STRING$(4 - len1%, "0"); END IF PRINT s$;NEXT
說明:
1. 該程式在qbasic 下編譯通過。
qbasic 可從 http://xiazai.zol.com.cn/detail/14/132311.shtml 下載
QBasic的學習,可參考http://www.zz5z.net/qb/index.htm
2. Qbasic是16位dos程式,數組的大小不能超過64k,故定義數組 buff(16000)。16000×4 <64K
3. 對bas程式的說明,免得時間長了忘記其文法。
3.1 變數名稱尾碼的含義
%:整數,2bytes, &:長整數,4bytes, $:字串。
3.2 數組使用 (), 而不用中括弧
3.3 運算子:mod 求餘, "/" 整除
3.4 Input 輸入,第一個字串表示提示資訊
3.5 Print 輸出,”:”分割表示緊湊格式輸出,“,”最各個欄位的分隔字元,鬆散格式輸出
3.6 函數,字串函數以$結尾,
STRING$, 重複多次字串
LTRIM$,RTIRM$: 除去前置/尾隨空格
STR$: 數值轉換為字串
4 效能比較:和Dos批處理和Linux Bash相比,雖然同是解釋性語言,但在qbasic 運行比dos批處理和Linux bash快得多