資源描述:
《超長整型數(shù)據(jù)的存儲與運算c代碼》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、#include#include#include#include#defineMAX101voidsub(inta[],intb[],intp);//函數(shù)功能:利用字符串實現(xiàn)超長整數(shù)減法運算intla,lb,ra=1,rb=1;/*把la,lb設為全局變量,la紀錄第一個超長整型數(shù)組的位數(shù),lb紀錄第二個超長整型數(shù)組的位數(shù)*/charc1[MAX],c2[MAX];/*紀錄需要計算的兩個超長整型數(shù)據(jù)*/voidinput(inta1[],inta
2、2[])/*函數(shù)input為輸入函數(shù),用來紀錄兩個待計算的超長整型數(shù)據(jù),以數(shù)組首地址為參數(shù).以實現(xiàn)返回兩個超長整型數(shù)據(jù)*/{inti,a=1,b=1;printf("請輸入第一個數(shù):");scanf("%s",c1);printf("請輸入第二個數(shù):");/*輸入兩個超長整型數(shù)據(jù)*/scanf("%s",c2);la=strlen(c1);/*la紀錄c1的位數(shù)*/lb=strlen(c2);/*lb紀錄c2的位數(shù)*/if(c1[0]=='-'){la--;ra=-1;a=0;}/*判斷數(shù)組的符號*/if(c2
3、[0]=='-'){lb--;rb=-1;b=0;}for(i=0;i0
4、
5、p){if(la>lb)d=la;elsed=lb;/*用d紀錄結果的最大位數(shù)*/for(i=0;
6、i
7、
8、ra<0)printf("-");for(i=d-1;i>=0;i--)printf("%d",c[i]);/*輸出結果*/}elsesub(a,b,1);}voidsub(inta[],intb[],intp)/*超長整數(shù)減法運算*/{inti,h=0,c
9、[MAX+1]={0},d;if(ra*rb>0
10、
11、p){if(la>lb)d=la;else/*用d紀錄結果的最大位數(shù)*/{d=lb;for(i=d;a[i]<=b[i]&&i>=0;i--)if(a[i]
12、+1]--;b[i]+=10;}c[i]=b[i]-a[i];}while(!c[d-1]&&d>1)d--;/*判斷最后結果的位數(shù)*/if(p&&(ra>0&&h
13、
14、ra<0&&!h)
15、
16、ra>0&&(rb>0&&h
17、
18、h&&!p))printf("-");if(ra<0&&rb<0&&!h)printf("-");/*如果h為真是輸出負號*/for(i=d-1;i>=0;i--)printf("%d",c[i]);}elseadd(a,b,1);}voidmult(inta[],intb[])/*超長整數(shù)乘法運算*
19、/{inti,j,c[2*MAX]={0},d;d=la+lb-1;/*用d紀錄結果的最大位數(shù)*/for(i=0;i=0;i--)printf("%d",c[i]);/*輸出結果*
20、/}//比較兩個用字符串存儲的超長正整數(shù)的大小,若a>b,返回1;a==b,返回0;a