国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

關(guān)于C語(yǔ)言實(shí)現(xiàn)高精度乘法運(yùn)算

2019-11-14 13:12:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

博主今年剛大一,對(duì)C語(yǔ)言并沒(méi)有掌握得很好,趁寒假惡補(bǔ)一下,剛好遇見(jiàn)這題,這代碼沒(méi)有大神的那么精練。如有錯(cuò)可以指出。- -。 首先,我們知道,c語(yǔ)言所能表示的數(shù)字不是無(wú)限大的,32位操作系統(tǒng)中 int 類型最大能到2^32-1(負(fù)數(shù)比正數(shù)多1)。 顯然當(dāng)要表達(dá)的數(shù)大于它就無(wú)法表示。這時(shí)也就有了高精度運(yùn)算。 其實(shí)高精度乘法運(yùn)算就是用計(jì)算機(jī)來(lái)模擬我們小學(xué)學(xué)的乘法的運(yùn)算法則。不啰嗦,先上代碼

#include <stdio.h>#include <string.h>int main(){ char a[1000],b[1000]; //a、b 表示兩個(gè)乘數(shù) int c[1000]; //用來(lái)存儲(chǔ)算出來(lái)的數(shù) int i,j; scanf("%s%s",a,b); //輸入 注意要用char類型 int lentha=strlen(a),lenthb=strlen(b); //計(jì)算兩個(gè)數(shù)的位數(shù) int na[lentha],nb[lenthb]; //注意這種寫(xiě)法(中括號(hào)里是變量)是C99、C11(忘了是哪個(gè)- -)的寫(xiě)法,有些編譯器或oj(像poj - -)會(huì)報(bào)錯(cuò)。//把char類型轉(zhuǎn)換為int類型的,注意要減'0',為什么自己想。。。 for (i=0,j=lentha-1;i<lentha;i++,j--) { na[i]=a[j]-'0'; } for (i=0,j=lenthb-1;i<lenthb;i++,j--) { nb[i]=b[j]-'0'; } for (i=0;i<1000;i++)//初始化 c[i]=0; for (i=0;i<lentha;i++)//核心代碼,5行- -。注意這里沒(méi)有進(jìn)位 for (j=0;j<lenthb;j++) { c[i+j]+=na[i]*nb[j]; } for (i=0;i<lentha+lenthb;i++) //這里進(jìn)行進(jìn)位處理,想想為什么lentha+lenthb就夠了,(我也不會(huì)證明...) { if (c[i]>=10) { c[i+1]+=c[i]/10; c[i]=c[i]%10; } } for (i=999;i>=0;i--)//這里低位在0這邊,從高位輸出,999其實(shí)可以優(yōu)化但**本人很懶..** if (c[i]!=0||i==0) break; for (;i>=0;i--) 該解釋的解釋完了。 總結(jié)一下,其實(shí)高精度乘法運(yùn)算不難。其中這里邊有借鑒其他博主的一些思想在這(最后輸出的那地方)。望多多包涵。這也是本人第一篇博客,水平有限 有錯(cuò)歡迎指出。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐源县| 岳普湖县| 海丰县| 香河县| 宜黄县| 彩票| 久治县| 卫辉市| 中超| 罗源县| 荃湾区| 蒙山县| 上林县| 绵阳市| 拉孜县| 乌鲁木齐县| 万荣县| 宁城县| 和田县| 平原县| 尼勒克县| 渭南市| 昭平县| 平谷区| 蒙阴县| 玛多县| 穆棱市| 四会市| 湾仔区| 东乡族自治县| 张家界市| 绥江县| 栾川县| 永顺县| 济阳县| 肇源县| 和田县| 大安市| 栖霞市| 青神县| 建湖县|