計算大數階乘 basic版

2021-06-06 20:09:52 字數 1245 閱讀 6466

**見下:

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...