**見下:
option base 1
dim buff(16000) as long
print "calc n!"
input "n="; nn%
rad& = 10000
arrlen% = 1
buff(1) = 1
for 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 if
next
print "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
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快得多
計算大數階乘 Dos批處理版
去年這個時候,學習了一下dos批處理程式設計。作為練習題,寫了乙個用dos批處理計算大數階乘的程式。dos 批處理的實現如下 echo off setlocal enabledelayedexpansion echo to calculate n set p nn n set a buff 1 1,...
階乘計算 大數計算
輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的進製。首先...
計算大數的階乘
問題 計算整數n的階乘,要求計算的結果最長可以到50位!50位十進位制而不是二進位制 先上 然後分析 解析 主要是通過陣列的思想來做。因為階乘太大,一般的資料型別是放不下的!所以可以用陣列來做,陣列每個元素都在0 9之間,陣列的乙個元素表示一位!比如 data 9 2 data 8 3 data 7...