åè代ç ï¼
#include <stdio.h>
#define MAXINT 1000
int compare(int a[],int b[]);
int bigplus(int a[],int b[],int c[]);
int bigsub(int a[],int b[],int c[]);
int bigmult(int a[],unsigned int b,int c[]);
int bigmult2(int a[],int b[],int c[]);
int bigdiv(int a[],unsigned int b,int c[],int *d);
int bigdiv2(int a[],int b[],int c[],int d[]);
int main(int argc, char *argv[])
{
int a[MAXINT]={10,5,4,6,5,4,3,2,1,1,1}; //被ä¹æ°æ被é¤æ°
int b[MAXINT]={7,7,6,5,4,3,2,1}; //ä¹æ°æé¤æ°
int c[MAXINT],d[MAXINT]; //c[]åæ¾åï¼d[]åæ¾ä½æ°
int div=1234; //å°ä¹æ°æå°é¤æ°
int k=0;
int *res=&k; //å°ä½æ°æ´æ°æé
bigplus(a,b,c);
bigsub(a,b,c);
bigmult2(a,b,c);
bigdiv2(a,b,c,d);
getchar();
return 0;
}
int bigplus(int a[],int b[],int c[]) //大æ´æ°å æ³
{
int i,len;
len=(a[0]>b[0]?a[0]:b[0]); //a[0] b[0]ä¿åæ°ç»é¿åº¦ï¼len为è¾é¿çä¸ä¸ª
for(i=0;i<MAXINT;i++) //å°æ°ç»æ¸
0
c[i]=0;
for (i=1;i<=len;i++) //计ç®æ¯ä¸ä½çå¼
{
c[i]+=(a[i]+b[i]);
if (c[i]>=10)
{
c[i]-=10; //大äº10çå个ä½
c[i+1]++; //é«ä½å 1
}
}
if (c[i+1]>0) len++;
c[0]=len; //c[0]ä¿åç»ææ°ç»å®é
é¿åº¦
printf("Big integers add: ";
for (i=len;i>=1;i--)
printf("%d",c[i]); //æå°ç»æ
printf("\n";
return 0;
}
int bigsub(int a[],int b[],int c[]) //大æ´æ°åæ³
{
int i,len;
len=(a[0]>b[0]?a[0]:b[0]); //a[0]ä¿åæ°åé¿åº¦ï¼len为è¾é¿çä¸ä¸ª
for(i=0;i<MAXINT;i++) //å°æ°ç»æ¸
0
c[i]=0;
if (compare(a,b)==0) //æ¯è¾a,b大å°
{
printf("Result:0";
return 0;
}
else if (compare(a,b)>0)
for (i=1;i<=len;i++) //计ç®æ¯ä¸ä½çå¼
{
c[i]+=(a[i]-b[i]);
if (c[i]<0)
{
c[i]+=10; //å°äº0çåä½å 10
c[i+1]--; //é«ä½å1
}
}
else
for (i=1;i<=len;i++) //计ç®æ¯ä¸ä½çå¼
{
c[i]+=(b[i]-a[i]);
if (c[i]<0)
{
c[i]+=10; //å°äº0åä½å 10
c[i+1]--; //é«ä½å1
}
}
while (len>1 && c[len]==0) //å»æé«ä½ç0
len--;
c[0]=len;
printf("Big integers sub= ";
if (a[0]<b[0]) printf("-";
for(i=len;i>=1;i--) //æå°ç»æ
printf("%d",c[i]);
printf("\n";
return 0;
}
int bigmult2(int a[],int b[],int c[]) //é«ç²¾åº¦ä¹ä»¥é«ç²¾åº¦
{
int i,j,len;
for (i=0;i<MAXINT;i++) //æ°ç»æ¸
0
c[i]=0;
for (i=1;i<=a[0];i++) //被ä¹æ°å¾ªç¯
for (j=1;j<=b[0];j++) //ä¹æ°å¾ªç¯
{
c[i+j-1]+=a[i]*b[j]; //å°æ¯ä¸ä½è®¡ç®ç´¯å
c[i+j]+=c[i+j-1]/10; //å°æ¯ä¸æ¬¡ç»æç´¯å å°é«ä¸ä½
c[i+j-1]%=10; //计ç®æ¯ä¸æ¬¡ç个ä½
}
len=a[0]+b[0]; //åæ大é¿åº¦
while (len>1 && c[len]==0) //å»æé«ä½0
len--;
c[0]=len;
printf("Big integers multi: ";
for (i=len;i>=1;i--) //æå°ç»æ
printf("%d",c[i]);
printf("\n";
}
int bigdiv2(int a[],int b[],int c[],int d[]) //é«ç²¾åº¦é¤ä»¥é«ç²¾åº¦
{
int i,j,len;
if (compare(a,b)<0) //被é¤æ°è¾å°ç´æ¥æå°ç»æ
{
printf("Result:0";
printf("Arithmetic compliment:";
for (i=a[0];i>=1;i--) printf("%d",a[i]);
printf("\n";
return -1;
}
for (i=0;i<MAXINT;i++) //ååä½æ°æ¸
0
{
c[i]=0;
d[i]=0;
}
len=a[0];d[0]=0;
for (i=len;i>=1;i--) //éä½ç¸é¤
{
for (j=d[0];j>=1;j--)
d[j+1]=d[j];
d[1]=a[i]; //é«ä½*10+åä½
d[0]++; //æ°ç»dé¿åº¦å¢1
while (compare(d,b)>=0) //æ¯è¾d,b大å°
{
for (j=1;j<=d[0];j++) //ååæ³d-b
{
d[j]-=b[j];
if (d[j]<0)
{
d[j]+=10;
d[j+1]--;
}
}
while (j>0 && d[j]==0) //å»æé«ä½0
j--;
d[0]=j;
c[i]++; //åæå¨ä½å¼å 1
}
}
j=b[0];
while (c[j]==0 && j>0) j--; //æ±åæ°ç»cé¿åº¦
c[0]=j;
printf("Big integers div result: ";
for (i=c[0];i>=1;i--) //æå°å
printf("%d",c[i]);
printf("\tArithmetic compliment: "; //æå°ä½æ°
for (i=d[0];i>=1;i--)
printf("%d",d[i]);
printf("\n");
}
追é®æ没æç¨æ°ç»åç
è¿ä¸ªç¨å°äºæé
追çè¿ä¸ªå°±æ¯ç¨æ°ç»çï¼æ²¡æç¨æéã