用一維數組存儲數據

       現實中當數值過大時可能無法存儲,比如我們需要存儲一個很大的數字,超過數據類型所能存儲的範圍,依此需求,可以用數組來創造存儲更大數字的空間來存儲數據。

       題目:設計一個可容納40位數的求n!的程序

       程序構思:

       首先將Data數組中的數據設置爲初始值零,再令第一位數值爲1,位數也爲1,再將每次相乘的乘積存回數組中,並順序處理每個數組中超過10的數,若數值超過10,則將位數加1,原來的數值除以10,所得的商與前一位數的和存回到前一位數的數組中,再將餘數存回到原來位數的數組中,最後再輸出每次計算後的結果:

  

       程序清單:

import java.util.Scanner;

/*
 * 程序功能:設計一個可容納40位數的求n!的程序
 */
public class array {

	public static void main(String[] args) {
		int Data[] = new int[40];// 存儲40位數的整數
		int Digit; // 數據位數據量
		int i, j, r, k;
		int N; // 用戶輸入值

		for (i = 1; i < 40; i++) { // 將數組初始爲0
			Data[i] = 0;
		}

		Data[0] = 1; // 設第0位數數組元素爲1
		Data[1] = 1;
		Digit = 1; // 設數據位數爲1

		System.out.print("Enter a number what you want to calculus:");
		Scanner in = new Scanner(System.in);
		// 讀取用戶欲求的N值
		N = in.nextInt();
		// N=in.nextInt();

		for (i = 1; i < N + 1; i++) {
			for (j = 1; j < Digit + 1; j++)
				Data[j] *= i;
			for (j = 1; j < Digit + 1; j++) {
				if (Data[j] > 10) {
					for (r = 1; r < Digit + 1; r++) {
						if (Data[Digit] > 10)
							Digit++;
						// 當數組中的元素值大於10時,則位數加1
						Data[r + 1] += Data[r] / 10;
						Data[r] = Data[r] % 10;
					}
				}
			}
			System.out.print(i + "!=");
			for (k = Digit; k > 0; k--) {
				System.out.print(Data[k]);
			}
			System.out.println();
		}
	}
}



比如輸入35,結果如下:

Enter a number what you want to calculus:35
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
11!=39916800
12!=479001600
13!=6227020800
14!=87178291200
15!=1307674368000
16!=20922789888000
17!=355687428096000
18!=6402373705728000
19!=121645100408832000
20!=2432902008176640000
21!=51090942171709440000
22!=1124000727777607680000
23!=25852016738884976640000
24!=620448401733239439360000
25!=15511210043330985984000000
26!=403291461126605635584000000
27!=0888869450418352160768000000
28!=34888344611713860501504000000
29!=011761993739701954543616000000
30!=352859812191058636308480000000
31!=11938654177922817725562880000000
32!=382036933693530167218012160000000
33!=12607218811886495518194401280000000
34!=428645439604140847618609643520000000
35!=15002590386144929666651337523200000000

 

此程序是根據《數據結構》(Java語言版)中的一個示例寫的。

發佈了47 篇原創文章 · 獲贊 7 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章