麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

關于C語言實現高精度乘法運算

2019-11-14 13:12:48
字體:
來源:轉載
供稿:網友

博主今年剛大一,對C語言并沒有掌握得很好,趁寒假惡補一下,剛好遇見這題,這代碼沒有大神的那么精練。如有錯可以指出。- -。 首先,我們知道,c語言所能表示的數字不是無限大的,32位操作系統中 int 類型最大能到2^32-1(負數比正數多1)。 顯然當要表達的數大于它就無法表示。這時也就有了高精度運算。 其實高精度乘法運算就是用計算機來模擬我們小學學的乘法的運算法則。不啰嗦,先上代碼

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲精品无码不卡在线播放he | 国产91在线免费 | 午夜在线视频一区二区三区 | 欧美 国产 综合 | 91性视频 | 粉嫩av一区二区三区四区在线观看 | 久久九九热re6这里有精品 | 一区二区三区欧美日韩 | 国产高潮失禁喷水爽到抽搐视频 | 日韩视频一区二区在线观看 | 午夜久久视频 | 免费国产自久久久久三四区久久 | 高清中文字幕在线 | 国产成人精品一区二区仙踪林 | 免费一级毛片免费播放 | 久久国产经典 | 亚洲午夜国产 | 久久综合久久精品 | 日本欧美一区二区三区在线播 | 国产精品视频一区二区三区四区五区 | 国产精品av久久久久久网址 | 综合日韩欧美 | 久久久久久久久久久久久九 | 成人在线视频免费 | 狠狠干视频网站 | 久色视频网站 | 久久久久北条麻妃免费看 | 国产1区2区3区中文字幕 | 亚洲视频精品在线 | 国产宾馆3p国语对白 | 国产无遮挡一区二区三区毛片日本 | 精品人伦一区二区三区蜜桃网站 | 久久久久久久一区二区三区 | 成人在线免费视频播放 | 中文在线观看www | 国产精品午夜在线 | 精品久久9999| 久久老司机精品视频 | 成人黄色小视频网站 | 免费黄色一级网站 | 久久久久久久一区 |