回覆列表
-
1 # 使用者2033590184843
相關內容
- C語言裡面字串函式strcmpbcmp區別?
- C語言。要輸入一個超大數比如111111111111111111111111111111111111111怎樣用字串陣列求各位的和呢?
- C語言。輸入一個字串,內有陣列和非數字字元,將其中連續的數字作為一個整數,依次存放到一陣列a中?
- C語言程式設計,寫一個函式,使輸入的一個字串按反序存放,在主函式中輸入和輸出字串。求下面程式解釋?
- C語言題目寫一個函式,使輸入的一個字串按反序存放,在主函式中輸入和輸出字串?
- C語言裡如何輸入幾個字串放到一個數組中?
- c語言中輸入一個字串,將字串中大寫字母刪除後,輸出該新字串?
- C語言程式設計中,輸入一個字串陣列,如何得出該陣列的長度?
- c語言中怎麼限制輸入字串的長度?
- 如何用C語言把一行字串的大寫字母轉換成小寫字母,小寫字母轉換成大寫,其他字元?
先回答你的第一個問題。高精度的本質就是用陣列存放一個數的各個數位。比如說int a[3]={3,2,1};就可以認為是儲存了一個數字123.為什麼要反過來呢?因為數字肯定是從個位開始的,但是你不一定知道最高位是多少。百位?千位?你不知道,所以要一個一個向下寫,從個位開始。那麼怎麼知道這個數字有多少位呢?很簡單,我在陣列下標為零的地方儲存就行了。這個時候陣列要開的大一點。比如int b[4]={3,0,1,2};就可以認為儲存了一個三位數210.初學者加上這個數字位數的儲存,沒問題的!怎麼樣輸出一個高精度數字呢?很簡單,一個迴圈,從最高位開始,到最低位結束,陣列遍歷一遍,數字一個一個打在螢幕上就行了。輸入也是同理,使用getchar()一個一個字元讀入,直到讀到了不是數字的字元停下來。這裡會湧現出一堆問題,比如說:字元怎麼轉換成數字?(char c=getchar();int a=c-‘0";//即可)怎麼判斷停止?不一定所有題目都會告訴你數字位數的!(if(c>=‘0" && c<=‘9");//是數字)......這些問題都可以現在假設你克服了所有困難,成功的輸入了兩個大數字到數組裡了。怎麼相加呢?很簡單,和豎式加法一樣。還是遍歷,從陣列的第一位(個位,下標為1)開始一直到最後,把兩個陣列的數字加起來,如果有進位,加上就行。具體來說,建立一個進位變數add,剛開始個位相加的時候是零,個位加起來以後如果有進位就給add賦值1,否則還是零;然後在十位相加的時候還要加上add,然後再看是否有進位,有進位就賦值1,沒有就是零,一直到最後,結果儲存在一個新的數組裡。最後,你得到了結果陣列。按位輸出就行了!這只是一個最簡單的高精度。以後的減法,乘法甚至除法,會更加複雜。你可能還要學結構體來更高效的處理這些大整數。加油吧!